Laravel 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'); } }
这是我编写的测试用例,当我在linux上尝试使用命令Laravel 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'); } },laravel,phpunit,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 I
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');
}
}
我尝试运行composer update,但仍然无法运行。以前有人遇到过这个问题吗?这个visit()
方法看起来像是SeleniumTestCase的一部分。所以我猜你要么从错误的基类扩展。我想应该是这样的:
class ExampleTest extends \PHPUnit_Extensions_Selenium2TestCase
{
// your test method
}
编辑:我刚刚注意到了Laravel标记,所以它可能更像是
illumb\Foundation\Testing\TestCase
。如果出现错误,无法找到类,则必须将phpunit.xml
中的引导文件设置为vendor/autoload.php
或另一个适当的引导文件,该文件已在自动加载器中注册。我可能在这个问题上迟到了,但这是我的2美分。我一直试图在我的测试用例中使用相同的方法,结果导致了惨败
<>我意识到,实际上我可以利用在基础命名空间上发现的TestRe答复类,它覆盖了响应对象周围的许多方法。
$this->get('/url/to/visit'); //Then you can make your assertions on the returned response.
在我的例子中,我打开了应用程序的身份验证,因此它总是抱怨标题视图显示当前登录用户的用户名。如果遇到这种情况,请使用Auth Facade,如下所示:
\Auth::loginUsingId(1);
您现在应该能够断言您的响应中包含一些文本。希望这有帮助。顺便说一句,我现在使用的是Laravel 5.4如果您使用的是新版本的Laravel,您必须使用与
$this->访问或类似的方法,请参见。在版本6左右,它被排除在Laravel之外
相反,您可以使用,但选项有限:
$this->get('/Login')
试试这个我已经有了TestCase标签,也尝试了扩展PHPUnit_Extensions_Selenium2TestCase,但它给了我一个致命的错误。你确定你为扩展的TestCase类使用了正确的名称空间吗?如果方法签名存在,可以使用IDE。特别是对于Laravel,一些测试功能被转移到了Traits,所以你可能也必须使用其中的一个。我想我可能缺少一些包,但我不确定要下载哪一个。好的,我刚刚发现:你在使用ExampleTest吗?在这种情况下,我假设代码应该是好的,我们应该看看其他问题。是否在基本目录中安装了composer以确保具有所有依赖项?