2016-08-02 5 views
0

私は単体テストの初心者で、PHPUnitを使ってLaravelアプリケーション用のテストケースをいくつか作成しようとしています。私は次のような基本的なテストを行った:PHPUnitで例外をテストする

これは動作しています。しかし、私はどのように無効な入力をテストすることができますし、与えられたパラメータで全くデータがないかのようなケースについて知りたいと思います。私はこれらのケースのそれぞれに対応する例外をスローしており、特定のメッセージを追加します。それが投げられているかどうかをどうすればテストできますか?

私はこのメソッドに含めたくないので、無効なUUID、データなどのようなAPIのさまざまなシナリオをテストするためのいくつかの他のメソッドを記述したいと思います。毎回API URLまたはこの呼び出しは、どのような種類のセットアップ関数からでも実行できますか?

答えて

0

私はlaravelについてはわかりませんが、PHPUNITではexpectException関数を使って例外がスローされたかどうかをテストできます。 InvalidArgumentException

$this->expectException(InvalidArgumentException::class); 

ためのたとえばあなたがいるのでhere

0

を見つけることができますまた、注釈@expectedExceptionを使用することができますし、などexpectExceptionCode()

もっと似例外で試験することができる多くのこともありますユニットテストをしていない(受け入れるテストはこの種のテストは受け入れテストです)、自分で例外をチェックすることはできません。

$this 
    ->json(
     'GET', 
     self::URL.'/'.$BAD_VALUE 
    ) 
    ->assertResponseStatus(422) 
    ->seeJson([ 
     /* Whatever you want to receive at invalid request */ 
    ]) 
    ->seeJsonStructure([ 
     /* Whatever you want to receive at invalid request */ 
    ]); 

ラーバル検証エラーが返される422 - 処理不能なエンティティ HTTPコード。

応答は、予想されるエラーメッセージなどでも確認できます。

+0

例外を投げている間、私は実際にPostmanを通してテストするときにエラーコード417を取得しています。それは実際に期待できない失敗です。 –

関連する問題