2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

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など)に影響を与えずに、確認したい部分だけを切り出してテストするための代役
というイメージだと思っています。

参考

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?