Test Stub
「SUTが中で依存している対象」の代用品
SUTに対する間接入力を操作することで、SUTを検証する
参考
/mrsekut-book-4798178187/099
/mrsekut-book-4798178187/101 (4-2 モックモジュールを使ったスタブ)
#WIP
この図の通り
/mrsekut-book-4798178187/107.icon
こんな感じの関数があり
code:hs
f x = g x + 100
今は関数fのテストをしたいとすると、gには特定の値を返してもらってほしかったりする
gのテスト自体は別で書くので、ここではfに注目してテストをしたいので。
あるある
next.jsのuseRouterを内部で使っているhooksをテストしたいときに、useRouterのstubを作るとか
スタブとのやり取りを決して検証してはならない
/mrsekut-book-4839981728/152
スタブへの呼び出しは、最終的な結果を生み出すための一過程に過ぎない
仮のデータを提供してるだけ
テストの壊れやすさにつながる
実装の詳細
テストしたいことの本質ではないからってことね
「スタブとのやり取りの検証」って例えば何?
e.g. /mrsekut-book-4839981728/153
gpt-4.iconに書かせたコードの一部
内部でfetch処理が書かれているのでこれを置き換えないとテストできない
code:ts
// 成年かどうかを判定する関数
// 内部でgetuserFromDBする関数に依存している
async function isUserAdult(userId: string): Promise<boolean> {
const user = await getuserFromDB(userId);
return user.age >= 18;
}
これはコード例がかなり微妙だと思うが、ノリは伝わる
https://goyoki.hatenablog.com/entry/20120301/1330608789#:~:text=該当します。-,Test%20Stub,-テスト対象へ
https://qiita.com/E-46/items/1a1ac569c10083246df1
https://qiita.com/k5trismegistus/items/10ce381d29ab62ca0ea6
https://qiita.com/hirohero/items/3ab63a1cdbe32bbeadf1
https://craftsman-software.com/posts/38
jest
https://jestjs.io/ja/docs/mock-functions#モックの戻り値