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->visitsee 类似的方法。它在版本 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()

Symfony 5 Phpunit 未定义方法

PHPUnit 错误致命错误:调用未定义的方法 Mock_Game_073a8e20::method()

调用未定义的方法 PHP_CodeCoverage_Filter::getInstance()

Phpunit给出未定义的变量项目错误

PHPUnit错误未定义变量