[Jest]mock関数の定理


テストコードを作成するときにmock関数を理解しました.
  • 何が違うの
  • なぜ
  • を使うのか
  • の使用方法
    紛らわしくて分かりにくいので、使い方を一つ一つ整理してみました.

    Mocking


    単位テストを作成するときに、コード依存部分を偽コードで置き換える方法.
    通常、テストするコードに依存する部分を直接生成することが困難な場合に使用されます.
    テストの実行速度は、実際のオブジェクトを使用するよりも速く、簡単ですが、常に同じ結果を生成できます.

    jest.fn()


    Jestは偽関数であるMock関数の生成を可能にする.fn()メソッドを提供します.
    この関数は通常のJavaScript関数のようにパラメータを渡して呼び出すことができます.
    const mockFn = jest.fn();
    一緒に使える方法も見てみましょう.

    mockReturnValue


    mock関数が返すべき値を設定できます.
    mockFn.mockReturnValue("I am a mock!");
    console.log(mockFn()); // I am a mock!

    mockResolvedValue

    mockREsolvedValue(Promise가 resolve하는 값)この関数を用いて偽非同期関数を構築することができる.
    mockFn.mockResolvedValue("I will be a mock!");
    mockFn().then((result) => {
      console.log(result); // I will be a mock!
    });

    mockImplementation

    mockImplementation(구현코드)この関数を使用すると、この関数を完全に実装できます.
    mockFn.mockImplementation((name) => `I am ${name}!`);
    console.log(mockFn("Dale")); // I am Dale!

    jest.spyOn()


    関数が呼び出されるかどうか、およびどのように呼び出されるかを知る必要がある場合、オブジェクトに属する関数の実装の代わりに使用できます.

    Reference

  • https://www.daleseo.com/jest-fn-spy-on/