Laravel:无法使用RefreshDatabase特征传递浏览器测试

时间:2017-10-01 17:04:36

标签: mysql laravel selenium laradock

如果我使用RefreshDatabase特征,我的测试将失败。

没有特征 - 测试将通过,但数据仍保留在数据库中。

我正在使用:

  • Laravel 5.5(新鲜的)
  • Laradock:nginx mysql selenium

测试正在从laradock的工作区运行。

这是一个简单的测试,来自官方documentation

<?php

namespace Tests\Browser;

use App\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Laravel\Dusk\Browser;
use Tests\DuskTestCase;

class LoginTest extends DuskTestCase
{
    use RefreshDatabase;

    /**
     * A Dusk test example.
     *
     * @return void
     */
    public function testLogin()
    {
        $user = factory(User::class)->create();

        // dump('wait...');
        // sleep(15);
        // dump('go!');

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

dump/sleep/dump只是为了查看用户是否已在数据库中创建。 不是!

php artisan dusk的结果是:

There was 1 failure:

1) Tests\Browser\LoginTest::testLogin
Failed asserting that '/login' matches PCRE pattern "/^\/home/u".

/var/www/vendor/laravel/dusk/src/Concerns/MakesAssertions.php:53
/var/www/tests/Browser/LoginTest.php:32
/var/www/vendor/laravel/dusk/src/TestCase.php:92
/var/www/tests/Browser/LoginTest.php:34

注意:
断言文本“这些凭据与我们的记录不符。”将是真的,所以我相信用户从未被创建过。

1 个答案:

答案 0 :(得分:0)

我不认为问题出在使用sqlite / pgsql / whateversql驱动程序。 而且我确定您不需要在$app['config']...上放置\Tests\CreatesApplication::createApplication行之类的内容。

我解决了在artisan config:clear之前运行artisan serve的问题。 它将创建新的phpunit.dusk.xml,它将路由到.env.dusk.{env},然后重新运行黄昏命令。