Laravel Dusk的tearDown()方法必须与Illuminate\Foundation\Testing\TestCase::tearDown()兼容。

4
public function tearDown()
    {
        $this->browse(function (Browser $browser) {
            $browser->click('#navbarDropdown')
                    ->click('.dropdown-item');
        });


        parent::tearDown();
    }

当我将tearDown()方法应用于我的测试类时,出现错误提示 the tearDown() must be compatible with Illuminate\Foundation\Testing\TestCase::tearDown(),我做错了什么?
每次运行测试都需要登录。我想在setUp()方法中登录并在tearDown()中注销,以便可以独立执行测试。
这是我的setUp()方法:
use databaseMigrations;
    public function setUp(): void
    {
        parent::setUp();

        $this->seed('DatabaseSeeder');

        $this->browse(function (Browser $browser) {
            $browser->visit('/admin')
                    ->type('email', 'admin@admin.com')
                    ->type('password', 'admin')
                    ->press('Login');
        });
    }

setUp()方法很好用。即使在tearDown()方法中不添加任何代码,除了parent::tearDown();之外,我仍然会出现错误,那么我的tearDown()方法哪里出了问题?

public function tearDown()
    {

        parent::tearDown();
    }
1个回答

10
您缺少 : voidtearDown() 上:
public function tearDown(): void
{
  parent::tearDown();
}

你已经正确实现了setUp(),但作为父类的两种方法需要兼容,省略: void是不行的。
每当你看到这个错误时,最好检查你正在继承的类的源代码。通过继承,它是:

Illuminate\Foundation\Testing\TestCase.php

/**
 * Setup the test environment.
 *
 * @return void
 */
protected function setUp(): void
{
  ...
}
...
/**
 * Clean up the testing environment before the next test.
 *
 * @return void
 */
protected function tearDown(): void
{
  ...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接