資料公開おばんです、スマブラではリトルマック使いの田中です。対戦相手ウェルカムです。Nightが先日で2周年を迎えました。今回はそこで登壇させていただいた内容について紹介します。非常にライトな話なので、仕事に疲れたら筆休めにでも読んでいってください。TanakaTL;DRそのテストの本質でないものは目立たせない、表立たせないライブラリは汎用化されたものなので、そのテストに適する形に書き換えるヘルパーに対してもテストが必要であれば書くやりたいことは事前準備じゃなくてテストなんだ...!テストは事前準備が大事なのは確かなのですが、それに時間を取られすぎていると気持ちが萎えてしまいます。それを助けるためによく使う、超簡単!明日から使えるヘルパーを紹介します。JSONファイルからテストデータを取得するやつたとえばPresenterやViewModelのテストをするとき、依存しているDomain層のコンポーネントが返却する値をStubで設定することはよくあると思います。私はテストで使うデータは、JSONファイルとしてテストターゲットに含めて、それを読み込んでオブジェクト化することをよくします。そんな時に利用するのがこのスライドのプログラムです。テストで知りたいのはどんな事前準備があるかだけなのに、ずいぶんとおおげさに行数を使ってくれます。本来やりたいのは、これくらいの分量でStubとなるhogeを用意することのはずです。欲しいインターフェースから考えて、テストヘルパーを実装していきます。難しいコードではありません。先ほどのもやっとするコードをほぼそのままクラスとしてまとめました。違いとしてはジェネリクスを使ってDecodable準拠のオブジェクトを扱えるように一般化しているところです。unwrapしているコードがみられますが、テストデータとして用意したものはまず存在するでしょう(nilになることはないでしょう)という考えで簡略化しています。丁寧にしたい人は、エラーハンドリングしてあげてください。Stubたとえば1つのメソッドの中で複数の通信が発生するようなもののテストをしたいこともあると思います。アクセストークンのリフレッシュ、からのリトライ処理などがイメージつきやすいでしょうか。このコードはOHHTTPStubsを用いてHTTP通信をStub化している例です。Responseを順番に返却させることです。ここでの困りごとは、テストファンクションで気にすべきでない不必要なロジックが丸出しになっている点です。やりたいことに対してはこのようなインターフェースがあれば十分です。不必要な条件はなるべく見えるところに置きたくありません。JSONのヘルパーの例と同様に、テストファンクション側に書かれているものを切り出しています。ここのこだわりポイントは、activateとdeactivateを対応づけて作っている点です。テストヘルパーを作る指針ライブラリは汎用化されたものなので、読みやすいテストを書いていくためには最適化していくことをオススメします。書いたヘルパーに対しても不安があればテストを書くことをオススメします。iOSアプリで実際に利用しているコードです。具体的な内容を見たいとか、こんなちょっとしたテスト話も興味があるよってiOSエンジニアの方はぜひ気軽にお話しましょう。あとスマブラの対戦者もお待ちしています。danbo-tanaka2018年6月に中途入社。M県S市杜王町出身のiOSエンジニア。百合と、BOOTHのiOSアプリを担当しています。最近の個人的なホットトピックは設計・テスト・リファクタリング。»common.min.js.html。