Upgrade to Pro — share decks privately, control downloads, hide ads and more …

XCTestでAPIのテストコードを書く

t.goda
April 22, 2022

 XCTestでAPIのテストコードを書く

MockingJayを利用してXCTestでのAPIテスト

t.goda

April 22, 2022
Tweet

More Decks by t.goda

Other Decks in Technology

Transcript

  1. 長年やれと言われていた • 某アプリケーションの単体テスト • 重要な機能の単体テストはコーディングしていた • APIに関連するテストは行っていなかった • 何故? •

    どうやるのか考えたことなかった • スタブ作んなきゃいけない • Response Handlingの処理が某アプリではめんどくさい実装になってる • Delegate使って処理を委譲してるため • >ライブラリいれて実装したりする必要がある • それらによってなんか怖い、めんどくさいという思い
  2. どう実装するのか • XcodeのプロジェクトにはデフォルトでXCTestがある • XCTest • Swift、Objective-Cで利用できるテストフレーム • Create and

    run unit tests, performance tests, and UI tests for your Xcode project. • らしい • 今回はXCTestを利用する
  3. スタブを作成する • stub(_ matcher: @escaping Matcher, delay: TimeInterval? = nil,

    _ builder: @escaping Builder) -> Stub • メソッド名からわかるように、スタブ生成メソッド • MatcherにマッチしたHTTP/HTTPS通信をハンドリングして、builderを返却する •すごい!!!!!こいつがほしかっ た!!!
  4. 罠その2 • このままだと非同期処理(通信処理)が終わる前にテストがおわるので ウェイトをかける • wait(for expectations: [XCTestExpectation], timeout seconds:

    TimeInterval) • timeoutまでウェイトをかけるメソッド • expectationsは、このパラメーターがfulfillされるのを待つ