2017-10-01 4 views
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 

注:テキストをアサート
は、 "これらの資格情報は、当社の記録と一致しません。"
が真実なので、私はそのユーザーが一度も作成されていないと信じています。

+0

あなたは 'sqlite:memory:'接続を使用していますか? –

+0

デフォルトで設定されている場合のみ。 –

+1

https://github.com/laravel/dusk/issues/73 –

答えて

-1

DatabaseMigrations形質を代わりにRefreshDatabase形質に使用してください。

関連する問題