在Laravel 5.6中,Dusk用户身份验证会话在测试类中的测试方法之间共享



所以我在一个测试类中有多个方法。

在第一种方法中,工厂用户被创建为登录填充登录凭据和assertPathis('/home'(。这个方法运行起来没有任何问题。

public function test_user_should_see_home()
{
$user = factory(User::class)->create([
'name' => 'first',
'email' => 'abc@gmail.com',
]);

$this->browse(function ($browser) use($user){
$browser->visit('/login')
->type('email', $user->email)
->type('password', 'secret')
->press('Login')
->assertPathIs('/home');
});
}

在第二种方法中,再次创建工厂用户,然后登录并填写凭据并进行一些断言。

public function test_user_should_see_login()
{
$user = factory(User::class)->create([
'name' => 'second',
'email' => 'abcd@gmail.com',
]);
$this->browse(function ($browser) use($user){
$browser->visit('/login')
->assertPathIs('/login');
});
}

但第二种方法失败了,出现了错误:

Unable to locate element: {"method":"css selector","selector":"body textarea[name='email']"}

我查看了屏幕截图错误,它显示用户在主页上,由于登录的用户无法登录,因此测试失败。

那么,我如何让黄昏将每个方法都视为一个单独的测试,而不是跨方法共享会话呢?

使用此选项删除测试之间的cookie:

protected function setUp() {
parent::setUp();
foreach(static::$browsers as $browser) {
$browser->driver->manage()->deleteAllCookies();
}
}

最新更新