【问题标题】: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,但仍然无法正常工作。有没有人遇到过这个问题?

【问题讨论】:

    标签: laravel phpunit


    【解决方案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 以确保您拥有所有依赖项?
          猜你喜欢
          • 2020-03-23
          • 2019-07-08
          • 2021-09-16
          • 2015-12-07
          • 2016-04-21
          • 2016-12-23
          • 2017-06-11
          • 2011-07-17
          相关资源
          最近更新 更多