Test Stub
SUTに対する
間接入力を操作することで、SUTを検証する
参考
この図の通り
こんな感じの関数があり
今は関数 f
のテストをしたいとすると、 g
には特定の値を返してもらってほしかったりする
g
のテスト自体は別で書くので、ここでは f
に注目してテストをしたいので。
あるある
next.jsのuseRouterを内部で使っているhooksをテストしたいときに、useRouterのstubを作るとか
スタブとのやり取りを決して検証してはならない
スタブへの呼び出しは、最終的な結果を生み出すための一過程に過ぎない
仮のデータを提供してるだけ
テストの壊れやすさにつながる
実装の詳細
テストしたいことの本質ではないからってことね
「スタブとのやり取りの検証」って例えば何?

に書かせたコードの一部
内部でfetch処理が書かれているのでこれを置き換えないとテストできない
ts// 成年かどうかを判定する関数
// 内部でgetuserFromDBする関数に依存している
async function isUserAdult(userId: string): Promise<boolean> {
const user = await getuserFromDB(userId);
return user.age >= 18;
}
これはコード例がかなり微妙だと思うが、ノリは伝わる
jest