2016-11-18 10 views
1

laravelに「データベース内でこのすべての挿入を行うように指示するsetUp()およびtearDown()メソッドを作成する方法はありますか?私は再び実行した場合、もちろんそれはエラー占いを返し、私はphpunitを実行することができ、それが動作します、まずLaravel 5データベースをリセットせずにphpUnitを使ってテストする

/** @test */ 
public function testRegistration(){ 

    $account = [ 
    'name'  => 'test', 
    'email' => '[email protected]', 
    'password' => '123451234' 
    ]; 

    $this->visit('/register') 
     ->type($account['name'],'name') 
     ->type($account['email'],'email') 
     ->type($account['password'],'password') 
     ->type($account['password'],'password_confirmation') 
     ->press('Register') 
     ->seePageIs('/home'); 
} 

「データベースをリセットせずに、すべての挿入は、私はこのようなテストを行う必要があります私はこの電子メールを既にデータベースに入れているので使用できません。

問題は、私は私のデータベースに挿入され、すでに12.000行を持っている私は私のデータベースをシンプルリセットすることはできませんということで、私は理にかなって私のアプリケーションに挿入されたこれらの12.000行を必要とするので、私はtest_databaseを作成することはできません。

私が使用できる情報が見つかりませんでした。「テストコールを移行してください::リフレッシュして4分かけてテーブルを再作成してください」というメッセージが表示されますが、可能ですより良い解決策を見つける!

また、私のsetUp()メソッドはどこに置かれますか、どこで呼び出しますか?

ありがとうございます。

答えて

1

thisおよびdocumentation(トランザクション処理中)を参照してください。

この特性は、トランザクションでデフォルトのデータベース接続をラップするだけです。

つまり、挿入は「偽造」されるため、毎回削除する必要はありません。

別の方法として、挿入をすべて削除する別のテストを追加することもできます。

User::where('name', 'test')->where('email','[email protected]')->delete(); 
+0

ありがとう、ちょうど私が必要なもの! –

関連する問題