如果我使用 RefreshDatabase 特征,我的测试将失败。
没有这个特征——测试将通过,但数据仍保留在数据库中。
我在用着:
- Laravel 5.5(一个新鲜的)
- Laradock:nginx mysql selenium
测试正在 laradock 的工作区运行。
这是来自官方文档的简单测试。
<?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
注意:
断言文本“这些凭据与我们的记录不匹配”。将是真的,所以我相信从未创建过用户。