[Jest]mock関数の定理
テストコードを作成するときにmock関数を理解しました.何が違うの なぜ を使うのか の使用方法
紛らわしくて分かりにくいので、使い方を一つ一つ整理してみました.
単位テストを作成するときに、コード依存部分を偽コードで置き換える方法.
通常、テストするコードに依存する部分を直接生成することが困難な場合に使用されます.
テストの実行速度は、実際のオブジェクトを使用するよりも速く、簡単ですが、常に同じ結果を生成できます.
Jestは偽関数であるMock関数の生成を可能にする.fn()メソッドを提供します.
この関数は通常のJavaScript関数のようにパラメータを渡して呼び出すことができます.
mock関数が返すべき値を設定できます.
関数が呼び出されるかどうか、およびどのように呼び出されるかを知る必要がある場合、オブジェクトに属する関数の実装の代わりに使用できます.
https://www.daleseo.com/jest-fn-spy-on/
紛らわしくて分かりにくいので、使い方を一つ一つ整理してみました.
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
Reference
この問題について([Jest]mock関数の定理), 我々は、より多くの情報をここで見つけました https://velog.io/@gygy/컴포넌트-테스트-하기-mock함수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol