PHPUnit错误:调用未定义的方法测试\ Unit \ ExampleTest :: visit()

时间:2017-10-11 06:01:29

标签: laravel phpunit

这是我编写的测试用例,当我尝试在linux上使用此命令vendor/bin/phpunit运行它时,它给出了错误“调用未定义的方法Tests \ Unit \ ExampleTest :: visit()”      

namespace Tests\Unit;

use Tests\TestCase;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;

class ExampleTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {
        $this->visit('/Login')
             ->type('KP123@gmail.com','email')
             ->type('123456','password')
             ->press('Login')
             ->seePageIs('/home')
             ->see('Katy Perry');
    }
}

我尝试过运行作曲家更新,但仍无法正常工作。以前有人遇到过这个问题吗?

4 个答案:

答案 0 :(得分:0)

visit()方法看起来像是SeleniumTestCase的一部分。所以我的猜测是你从错误的基类扩展。我认为它看起来应该是这样的:

class ExampleTest extends \PHPUnit_Extensions_Selenium2TestCase
{
    // your test method
}

编辑:我刚刚注意到了Laravel标签,所以它可能更像是Illuminate\Foundation\Testing\TestCase。如果这会给您带来错误而无法找到该类,则必须将phpunit.xml中的引导程序文件设置为vendor/autoload.php或其他适当的引导文件,其中文件已在自动装带器中注册。

答案 1 :(得分:0)

我可能会迟到这个问题,但这是我的2美分。我一直试图在我的测试用例中使用相同的方法,这导致了一个惨淡的失败。

我意识到我实际上可以使用在Foundation命名空间上找到的TestResponse类,它包含响应对象周围的许多方法。

$this->get('/url/to/visit'); //Then you can make your assertions on the returned response.

在我的情况下,我为应用程序启用了身份验证,因此它始终抱怨标题视图,其中显示当前登录用户的用户名。如果遇到这种情况,请使用如下所示的Auth Facade:

\Auth::loginUsingId(1);

您现在应该可以断言您的回复中包含一些文字。希望这可以帮助。顺便说一句,我在Laravel 5.4

答案 2 :(得分:0)

如果您使用的是新版本的 Laravel,您必须使用 Laravel Dusk 来使用与 $this->visitsee 类似的方法。它在版本 6 左右被排除在 Laravel 之外。

相反,您可以使用,但它的选项有限:

$this->get('/Login')

答案 3 :(得分:0)

composer require laravel/browser-kit-testing --dev

试试这个