Ich bin neu bei Jest und versuche damit zu testen, ob eine Funktion aufgerufen wurde oder nicht. Ich habe festgestellt, dass die mock.calls.length nicht für jeden Test zurückgesetzt wird, sondern sich ansammelt. Wie kann ich es vor jedem Test auf 0 setzen? Ich möchte nicht, dass meine nächsten Tests von den Ergebnissen der vorherigen abhängen.
Ich weiß, dass es vor jedem im Scherz gibt - sollte ich es benutzen? Was ist der beste Weg, um mock.calls.length zurückzusetzen? Vielen Dank.
Ein Codebeispiel:
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);
});
local.mockClear()
, funktioniert es nicht.