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

时间:2018-07-12 17:31:42

标签: laravel laravel-5 laravel-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']"}

我查看了屏幕快照错误,该错误显示用户位于主页上,并且由于已登录的用户无法登录,因此测试失败。

那么我该如何黄昏才能将每种方法视为一个单独的测试,而不是在各个方法之间共享会话?

1 个答案:

答案 0 :(得分:0)

使用它删除测试之间的cookie:

protected function setUp() {
    parent::setUp();

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