4
RefreshDatabase特性を使用すると、私のテストは失敗します。Laravel:RefreshDatabase特性を使用してブラウザテストに合格できません
形質なしでは、テストは合格しますが、データはデータベースに残ります。
私が使用している:
- Laravel 5.5(新鮮なもの)
- Laradock:nginxのmysqlのセレン
テストは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
注:テキストをアサート
は、 "これらの資格情報は、当社の記録と一致しません。"が真実なので、私はそのユーザーが一度も作成されていないと信じています。
あなたは 'sqlite:memory:'接続を使用していますか? –
デフォルトで設定されている場合のみ。 –
https://github.com/laravel/dusk/issues/73 –