8

私は一連の RESTful API を構築しており、それらの単体テストを作成する必要があります。単体テストで実際に何をテストする必要があるのか​​ わかりません。

単体テストは、サーバーから受信した応答がさまざまな入力に対して正しいかどうかを確認する必要がありますか? もしそうなら、一連の正しい応答形式を事前に定義し、それらに対して応答をチェックすることは良い習慣ですか?

アップデート

これらのサービスを CURL 経由で呼び出していますが、ステータス コードを確実に確認できます。応答は入力ごとに異なる可能性があるため、考えられるすべての応答を確認する必要がありますか?

通常、PHPUnit を使用した RESTful API の単体テストはどのように行われますか?

4

2 に答える 2

4

API のデータ層が十分に抽象化されていて、特定の入力に対して一貫性のある予測可能な出力を受け取ることができる場合、テスト ケースには、いくつかの入力の有限リストに対する一般的な出力期待値を確実に含める必要があります。また、ドラムできるエラー ケースもテストする必要があります。上。

API が予測可能な状態にあるデータ レイヤーに対して実行できない場合 (たとえば、ライブ データに接続されている場合や、開発者間で共有されているデータに接続されている場合)、API の修正に多くの時間を費やすことになります。データの新しい状態を正しくモデル化するためのテスト。これにより、ユニット テストの価値が低下します。ユニット テストを実行する頻度が減る可能性があり、テストの失敗がデータの変更によるものなのか、プログラム ロジックの変更によるものなのかがわからないからです。それが単体テストを行わないリスクを上回るかどうかは、個々の状況 (テストが壊れる頻度、サービスがどれほど重要かなど) によって異なります。

PHPUnit を使用してテスト ケースを実行する方法に関しては、具体的に答えることはできませんが、@basiljames が指摘したように行うと思います。特定のエンドポイントに対して呼び出しを実行し、受信した応答が期待どおりであることを確認します。実行速度が少し遅くなる可能性があることを除けば、他の単体テストとそれほど違いはありません。

于 2012-09-17T05:09:32.340 に答える
2

テスト ケースには JUnit を使用できます。HTTP Status Code特定の属性または値の応答の内容を確認し、後で確認する必要があります。

于 2012-09-16T12:57:47.127 に答える