PHPUnit 错误:调用未定义的方法 Tests\Unit\ExampleTest::visit()
Posted
技术标签:
【中文标题】PHPUnit 错误:调用未定义的方法 Tests\\Unit\\ExampleTest::visit()【英文标题】:PHPUnit Error: Call to undefined method Tests\Unit\ExampleTest::visit()PHPUnit 错误:调用未定义的方法 Tests\Unit\ExampleTest::visit() 【发布时间】:2018-03-22 16:39:49 【问题描述】:这是我编写的测试用例,当我尝试在 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');
我已尝试运行 composer update,但仍然无法正常工作。有没有人遇到过这个问题?
【问题讨论】:
【参考方案1】:composer require laravel/browser-kit-testing --dev
试试这个
【讨论】:
【参考方案2】:如果你使用的是新版本的 Laravel,你必须使用 Laravel Dusk 来使用与 $this->visit
或 see
类似的方法。它在版本 6 左右被排除在 Laravel 之外。
您也可以使用,但选项有限:
$this->get('/Login')
【讨论】:
【参考方案3】:我可能迟到了这个问题,但这是我的 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
【讨论】:
【参考方案4】:visit()
方法看起来像是 SeleniumTestCase 的一部分。所以我的猜测是你要么从错误的基类扩展。我认为它应该看起来像这样:
class ExampleTest extends \PHPUnit_Extensions_Selenium2TestCase
// your test method
编辑:我刚刚注意到 Laravel 标签,所以它可能更像是Illuminate\Foundation\Testing\TestCase
。如果这给您带来找不到类的错误,您必须将phpunit.xml
中的引导文件设置为vendor/autoload.php
或其他适当的引导文件,该文件已在自动加载器中注册。
【讨论】:
我已经有了 TestCase 标签,还尝试扩展 PHPUnit_Extensions_Selenium2TestCase,但它给了我一个致命错误 您确定为您扩展的 TestCase 类使用了正确的命名空间吗?如果方法签名存在,也许可以使用您的 IDE。尤其是在 Laravel 中,一些测试功能被移到了 Traits 中,所以你可能也必须使用其中之一。 我认为可能缺少一些包,但我不确定要下载哪个包 好的,我刚刚发现了这个:laravel.com/docs/5.2/testing#introduction 你在使用那个 ExampleTest 吗?在那种情况下,我认为代码应该没问题,我们应该看看其他问题。您是否在基本目录中安装了 composer 以确保您拥有所有依赖项?以上是关于PHPUnit 错误:调用未定义的方法 Tests\Unit\ExampleTest::visit()的主要内容,如果未能解决你的问题,请参考以下文章
错误:调用未定义的方法 Tests\Unit\SomeTest::assertStatus()
PHPUnit 错误致命错误:调用未定义的方法 Mock_Game_073a8e20::method()