エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

テストコードでStubを使うと良い理由を考える【452日目】

テストコードについて質問されました

最近テストコードで質問出たので、そのときに回答したことメモ

間違ってたら、教えてくれると嬉しいです(‘ω‘ )

Q. Stubじゃなくて全部モックでよくね?

Stubじゃなきゃ困るときもある理由を書いてみた。

Stubをちゃんと書けば、
どこかで該当関数の仕様を変えたときに、ちゃんと影響テストできるよね。

例えば、戻り値がModelオブジェクトからmixになったとか。
このとき、同じインターフェースで作っていればStubも変更するはずなので、
Stubを通したテストなら(ある程度)検知ができるよね。

もし、全ての関数をStub使わずモックで置き換えしていたら・・・
仕様の変更は、全てのモック置き換えで握りつぶされちゃうね

メモ:そもそもに

Stubの目的と、モックの目的ってなんだろうってのも考え直したいやーつ。

モックでの置き換えって、個人的には既にテスト済みとか、テスト範囲外とかを置き換えるとかのイメージ。あと、Laravelとかで標準で実装されてるものとか(これもテスト済みコードと言い換えれる)。

あと、テストコード書いてるときに、なんのためのテストコード、何をテストしたいのかをもう少し考えて書きたい。

とりあえず、テストコード書くときに、何を確かめようとしているんだっけ?ってのを立ち止まって考えてみたいと思いましたまる。