いつもお世話になっております。
PHPUnitを学習しております。
- 例外が発生する
- 保存失敗でDBがロールバックされる
ことを期待するテストで以下のように書いた場合
/** * @test */ public function 例外時はDBがロールバックする() { $this->expectException(\Exception::class); $this->expectExceptionMessage('Duplicate entry'); //メソッド実行 $this->sut->テストしたいメソッド(); //ここが実行される前にテストが終了 $this->assertDatabaseMissing('rooms', [ 'uuid' => $uuid, ]); }
テスト冒頭に
$this->expectException(\Exception::class);
を使用すると最後のAssertまで進む前にテストが終わってしまい、
逆に
$this->expectException(\Exception::class);
を書かないとエラーが出てテストが落ちてしまいます。
エラー自体は期待した動きなのですが、それでテストが落ちてしまうので困っております。
$this->expectException(\Exception::class);
だけだと例外が出ていることを確認するだけなので、assertDatabaseも同時に確認したいのですが
2つのメソッドは共存できないのでしょうか。
ドキュメントを確認してもそういった記述が無かったため、どなたか知見のある方ご教示いただけますと嬉しいです。
何卒よろしくお願いいたします。
環境
PHPUnit 8.5.8
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。