如果我使用RefreshDatabase特征,我的测试将失败。
没有特征 - 测试将通过,但数据仍保留在数据库中。
我正在使用:
测试正在从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
注意:
断言文本“这些凭据与我们的记录不符。”将是真的,所以我相信用户从未被创建过。
答案 0 :(得分:0)
我不认为问题出在使用sqlite / pgsql / whateversql驱动程序。
而且我确定您不需要在$app['config']...
上放置\Tests\CreatesApplication::createApplication
行之类的内容。
我解决了在artisan config:clear
之前运行artisan serve
的问题。
它将创建新的phpunit.dusk.xml,它将路由到.env.dusk.{env}
,然后重新运行黄昏命令。