はじめに
Jestを使ってテストを作成していました。
モックて何?ってなったので簡単にまとめます。
モックとは
モックは、テストのために本物の代わりとして用意す“代役”です。
本物の処理を呼び出さずに、「呼ばれた回数」「渡された引数」など提醒したいポイントだけを確認できます。
どんな感じで使うのか
ここまで書いてみて、わかるようでわからないので具体例を見てみましょう
例えば「コールバックが呼ばれたか」だけ見たい場合はモック関数が便利です。
test('コールバックが1回呼ばれる', () => {
const onClick = jest.fn();
// 何らかの処理で onClick が呼ばれる想定
onClick('ok');
expect(onClick).toHaveBeenCalledTimes(1);
expect(onClick).toHaveBeenCalledWith('ok');
});
まず、const onClick = jest.fn();で偽物を作成します。
ここでは記載してないですが、テストを行うものにonClickがあるとします。
今回のjest.fn();を代入されたonClickは本物のonClickの代わりに、テスト用のonClickを渡すという状態です。
そして、ここで作成したonClickを使って以下のテストをすると。。。
expect(onClick).toHaveBeenCalledTimes(1);で呼ばれた回数
expect(onClick).toHaveBeenCalledWith('ok');で渡された引数
がわかります。
注意点
モックは便利ですが、やりすぎると「本番では動かないのにテストだけ通る」状態になりがちです。
-本物とモックの仕様がズレる
-画面遷移やAPI連携など “結合部分” の不具合を見逃す
終わり
モックは「わかるようでわからない」感じがありましたが、整理すると本番環境(DBやAPIなど)に影響を与えずに、確認したい部分だけを切り出してテストするための代役
というイメージだと思っています。
参考