タイトルのように:500 HTTP応答を返す統合テストサーバーの障害をどのようにして行うのですか?
例:
POST
上のファイルを受け入れ、サーバーのファイルシステムに保存する/save
エンドポイントを持つサーバーがありますX
があり、ファイル保存機能をアプリケーションの他の端のどこかで処理しますX
はいくつかの理由で失敗する可能性がありますが、この例では、ディスクにスペースがないためにクラッシュするとします。この状況で何をしますか?
X
をモックして、実際にテストでエラーをスローしますか?そして、おそらく私の全体の闘いに答える一つの質問:
考えられるすべてのエラーがHTTP 500
を返しているかどうかをテストしていますか。これは、オーバーエンジニアリングと呼ぶものですか、それともかなり良い方法ですか?
基本的に、テストする必要があるのは3つあります。
ディスク容量が不足すると、コンポーネントは正しい例外をスローしますか?
これは、単体テストで依存関係を模擬し、必要なエラーをスローすることで確認できます。
ホスティング層はすべての例外をHTTP 500としてユーザーに返しますか
これは、エラーシナリオをテストする統合テストを行うことで確認できます。おそらく、特定の入力でスローされることがわかっている他のテストの1つ。
問題の特定の例外はHTTP 500エラーを返しますか
これはテストが困難ですが、モックを完全なアプリケーションに挿入することでテストできます。同じモックでさまざまなシナリオをテストできるように、入力に応じて異なる例外を返すようにモックをコーディングします。
実際には、奇妙なことがなければ、3をスキップします。あなたはグローバルなエラー処理をテストしているだけであり、起こり得るすべての例外をカバーすることはできません
エンドツーエンドの統合テストでは、ハッピーパスと、トリガーが簡単ないくつかの障害シナリオに焦点を当てます。
より複雑な、またはトリガーが難しい障害シナリオは、単体テストとコンポーネントテストでカバーする必要があります。
あなたが説明するシナリオでは、
これらはすべてユニット/コンポーネントレベルのテストであり、依存関係のほとんどがモックまたはスタブされています。