2017-09-03 9 views
0

DBに値を追加しているルートをテストしたいと思います。ラーバルテスト:DatabaseTransactions、ロールバックが機能していない

use DatabaseTransactions; 
public function testValues() 
{ 
    $this->withoutMiddleware(); // Disabling the auth middleware 


    $response = $this->json('POST', '/values', [ 

     'values' => 'THIS_IS_A_TEST', 

    ]); 
    $response 
     ->assertStatus(200); 



    $this->assertDatabaseHas('values', [ 
     'value' => 'THIS_IS_A_TEST' 
    ]); 
} 

最後のアサーションはデータベースが空であるため、常に間違っている:

は、ここに私のテストです。私はそれが最後のアサーションが値がDBに追加される前に行われているからだと思います。

2番目のアサーションは、最初のアサーションが実行されたときにのみ実行できますか?

このテストを同期させることはできますか?

答えて

0

まず、私はこの質問に答えることができます 2番目のアサーションは、最初のアサーションが実行されたときにのみ実行できますか? - はい...

私のコードはあなたのもとで動作することを願っています。

DB::beginTransaction(); 
try { 
    $response = $this->json('POST', '/values', [ 
     'values' => 'THIS_IS_A_TEST', 
     ]); 
     $response 
      ->assertStatus(200); 



     $this->assertDatabaseHas('values', [ 
      'value' => 'THIS_IS_A_TEST' 
     ]); 

     //This success request 
} catch (\Exception $exception) { 
     DB::rollBack(); 

     //This failed request 

} 
関連する問題