APIクライアントをAPIKit+RxSwiftからURLSession+Combineにしたお話の後編にあたります。前回までのお話はこちらをご参照ください。ApiServiceに準拠したテストを書いていきます。Quickを使ったテストの書き方になっていますのでご了承ください。おさらいまずはApiServiceがどんなProtocolだったかおさらいしておきます。APIServiceError>を返すことを制約としていました。前編を参考にしてください。urlRequest)を叩くことでレスポンスを受け取っていました。テストを書く際もこのプロトコルに準拠させることで可読性の高いテストを書いていきたいと思います。HTTPリクエストのテストまずHTTPリクエストのテストについて考えます。リクエストの成功、失敗HTTPリクエスト自体をテストしたいケースとしては以下のようなものが考えられます。HTTPリクエストがなんらかの理由で失敗した場合、レスポンスとして返ってきた情報を正しく操作できているか確認したい。HTTPリクエストが成功した場合、パース処理にdataが渡っていることを確認したい。正常にレスポンスが渡ってきた場合でも、パースに失敗した場合クライアント側にデータを渡す訳にはいかないので、こちらも正しくエラーハンドリングできているか確認したいので、パース結果が適切かもテストしていきたいと思います。どのようにテストを書きたいかどんなテストが書きたいかを再確認したところで、どのように書きたいかを考えていきます。当初自分の頭の中にあったイメージはこのようなものでした。注入したデータがパースされていてテストが通るもう少し具体的にコードを交えて書くとこのような感じです。}}3の作成したデータをアダプターみたいなもので注入をどのように実現するのかイマイチよく分かっていなかったのでどうしようかなと調べていたら、URLProtocolを使用して、サーバーの応答を直接モックすることができることが分かりURLProtocolにモックする方法で書くことにしました。data.プロトコル固有のURLデータのロードを処理する抽象クラスとあります。それならprotocolでいいのでは?と思いつつマニュアルどおりにmockURLProtocolを実装するとこのような感じになりました。