REST APIをテストしています。JSON構造を返すとしましょう。サーバーをテストするための最良のアプローチは何ですか?各テストステップは、前のすべてが成功した場合にのみ成功します。
構造A:すべてを一度にテストする
- Test method 1:
- make server request
- assert http response code was 200
- assert returned file is not empty
- assert returned file has valid JSON syntax
- assert returned JSON contains key X
これが最善の解決策のようです。
利点:
- 1つのサーバー要求のみ
- 「サーバーはキーXのJSONを返しますか?」という動作全体をテストしています。
構造B:各テストにアサートを徐々に追加します
- Test method 1:
- make server request
- assert http response code was 200
- Test method 2:
- make server request
- assert returned file is not empty
- Test method 3:
- make server request
- assert returned file has valid JSON syntax
- Test method 4:
- make server request
- assert returned JSON contains key X
これが私がそれを始めた方法であり、すべての方法が単一のものだけをテストし、これがより良い分離を生み出すので、これが進むべき道であると確信しました。しかし、今は、これらは単体テストではないので、私の分離は適切ではなく、動作全体をテストする必要があると思います。
構造C:リクエストを1回作成し、キャッシュされた応答に対して個別のテストメソッドを実行する
- make server request and cache it (allow read-only access)
- Test method 1:
- assert http response code was 200 on cached server request
- Test method 2:
- assert returned file is not empty on cached server request
- Test method 3:
- assert returned file has valid JSON syntax on cached server request
- Test method 4:
- assert returned JSON contains key X on cached server request
利点:
- 繰り返しの(高価な)サーバー要求はありません
- シングルアサートテストメソッドはまだあります
使用するのに最も賢明なテスト構造はどれですか?