テスト
- 基本的に全ての振る舞いのテストを書く
- 書けないのなら書けるよう責務を分割する
- バグが発覚した際は、バグをテストで再現してからグリーンにする
- 単体テストでは全てのパターンを網羅、統合テストは1パターンのハンドリング
mockとstubの違いって何
受信メッセージのテストをするときは注目しているオブジェクト以外のオブジェクトは偽物を注入し、テストの成功不成功が注目オブジェクトの実装のみに依存するようにする。これをスタブという。
送信メッセージのテストをするときはメッセージの受け手を偽物にすり替えておき、この偽物にメッセージの引数や呼び出し回数が想定通りか検証させる。これをモックという。
https://qiita.com/k5trismegistus/items/10ce381d29ab62ca0ea6
解釈
- テストの観点が外部APIへのリクエストではなく、処理の一部で外部APIにリクエストするだけの場合、実際に叩かず適当な結果だけを返してほしい ... stub
- テストの観点が外部APIへのリクエストであり、メッセージの引数や呼び出し回数を検証したい ... mock
テストの観点によって対象がstubかmockか変わるっぽい、rspecの場合どちらも内包していそう