[解決済み] Jestのモック関数の呼び出し回数をテスト前に毎回リセットする方法
2022-02-11 17:47:05
質問
Jestを初めて使うのですが、関数が呼ばれたかどうかをテストするために使おうとしています。mock.calls.lengthはテストごとにリセットされるのではなく、蓄積されていくことに気づきました。どのように私はそれがすべてのテストの前に0にすることができますか?私は私の次のテストが前の結果に依存することを望んでいません。
JestにbeforeEachがあるのは知っていますが、使うべきですか?mock.calls.lengthをリセットするには、どのような方法が良いでしょうか?ありがとうございます。
コード例です。
Sum.js。
import local from 'api/local';
export default {
addNumbers(a, b) {
if (a + b <= 10) {
local.getData();
}
return a + b;
},
};
Sum.test.js
import sum from 'api/sum';
import local from 'api/local';
jest.mock('api/local');
// For current implementation, there is a difference
// if I put test 1 before test 2. I want it to be no difference
// test 1
test('should not to call local if sum is more than 10', () => {
expect(sum.addNumbers(5, 10)).toBe(15);
expect(local.getData.mock.calls.length).toBe(0);
});
// test 2
test('should call local if sum <= 10', () => {
expect(sum.addNumbers(1, 4)).toBe(5);
expect(local.getData.mock.calls.length).toBe(1);
});
解決方法は?
ひとつは、テストが終わるたびにモック関数をクリアする方法です。
Sum.test.jsに追加する。
afterEach(() => {
local.getData.mockClear();
});
テストが終わるたびにモック関数をすべて消去したい場合は クリアオールモック
afterEach(() => {
jest.clearAllMocks();
});
関連
-
[解決済み】webpack-dev-serverにリモート接続すると、「Invalid Host header」というメッセージが表示されます。
-
[解決済み] React with ES7: Uncaught TypeError: Cannot read property 'state' of undefined [duplicate] (未定義のプロパティ'state'を読み込むことはできません。
-
[解決済み] テスト
-
[解決済み】Uncaught ReferenceError。Firebase は定義されていません。
-
[解決済み] Jestを使用して単一のテストを実行するにはどうすればよいですか?
-
[解決済み] Jestを使用して1つのファイルをテストするにはどうすればよいですか?
-
[解決済み] Jestでモックがエラーを投げるようにするにはどうしたらいいですか?
-
[解決済み] Jestを使用してES6モジュールのインポートをモックするにはどうすればよいですか?
-
[解決済み】JavaScriptのConst:いつ使うのか、必要なのか?
-
[解決済み】Jestでスローされた例外の型をテストする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Javascript:getElementById対getElementsById(両方が別のページで動作する)。
-
[解決済み】document.getElementByIDは関数ではありません。
-
[解決済み] 解決済み】clearInterval()が動作しない [重複] [重複]
-
[解決済み】JavaScriptのgetElementByNameが機能しない
-
[解決済み】Javascriptのコールバック関数がFirefoxで「Callback is not a function」というエラーを投げる
-
[解決済み】「Uncaught TypeError: Chromeで "Illegal invocation "が発生する。
-
[解決済み] [Solved] Uncaught TypeError: nullのプロパティ 'appendChild' を読み取ることができない。
-
[解決済み】DOMException: サポートされているソースが見つからなかったため、読み込みに失敗しました。
-
[解決済み】Uncaught ReferenceError。Firebase は定義されていません。
-
[解決済み】'useState' が定義されていない no-undef React