0
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?

More than 3 years have passed since last update.

【jest】基礎 RSpecと比較 モック関数について

Last updated at Posted at 2020-09-13

はじめに

jestを学習し始めたので、簡単にまとめる。
主に公式ドキュメントの序盤のみになります。
https://jestjs.io/en/

jest

test('1+1は2', () => {
  expect(1+1).toBe(2);     
});

RSpec

RSpec.describe '足し算' do
  it '1+1は2' do
    expect(1 + 1).to eq 2
  end
end

jestでモック関数を作成


function forEach(items, callback) {
  for (let index = 0; index < items.length; index++) {
    callback(items[index]);
  }
}

↑こういった、配列とコールバックを引数に受け取る関数を定義して、

const mockCallback = jest.fn(x => 42 + x);
forEach([0, 1], mockCallback);

受け取った数値に42を足すモック関数をjest.fnで定義。
mockCallbackに代入。
これで、jestが用意するメタ情報を持っているダミーの関数ができる。

ここから、テストを作成し、コールバックに適切にパラメータが渡っているか、実行結果が返せているかを検証する。

//mockCallbackが呼ばれる回数は2回
expect(mockCallback.mock.calls.length).toBe(2);

//1回目にモック関数が呼ばれたときの引数の1番目は’0’
expect(mockCallback.mock.calls[0][0]).toBe(0);

//2回目にモック関数が呼ばれたときの引数の1番目は’1’
expect(mockCallback.mock.calls[1][0]).toBe(1);

//1回目にモック関数が呼ばれたときのリターンは’42’
expect(mockCallback.mock.results[0].value).toBe(42);

ここまでがドキュメントに載っているものです。
更に、例えば

//2回目にモック関数が呼ばれたときのリターンは’43’
expect(mockCallback.mock.results[1].value).toBe(43);

こちらのテストもパスすることになる。

終わりに。

最後まで読んで頂きありがとうございます:bow_tone1:
転職の為、未経験の状態からReact,Rails等を学習しております。継続して投稿していく中で、その為のインプットも必然的に増え、成長に繋がるかと考えています。
投稿の内容に間違っているところや、付け加えるべきところが多々あるかと思いますので、ご指摘頂けると幸いです。この記事を読んで下さりありがとうございました。

0
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
0
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?