Soy nuevo en Jest, estoy tratando de usarlo para probar si se llamó a una función o no. Noté que mock.calls.length no se restablece para cada prueba, sino que se acumula. ¿Cómo puedo convertirlo en 0 antes de cada prueba? No quiero que mis próximas pruebas dependan de los resultados de las anteriores.
Sé que hay beforeEach en Jest, ¿debería usarlo? ¿Cuál es la mejor manera de restablecer mock.calls.length? Gracias.
Un ejemplo de código:
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);
});
javascript
unit-testing
jestjs
Alex Efremov
fuente
fuente
local.mockClear()
, no funciona.jest.clearAllMocks()
? Documentos: jestjs.io/docs/en/jest-object#jestclearallmocksjest.clearAllMocks()
función! He estado usandomockClear()
parajest.mock
clases y aparentemente las simulaciones no se borraron por completo de alguna manera (las llamadas a funciones espías dentro de las clases simuladas no se borraron). Esto dio lugar a errores de diferencia instancia de objeto muy molestos:Compared values have no visual difference.
.Como señaló @AlexEfremov en los comentarios. Es posible que desee utilizar
clearAllMocks
después de cada prueba:afterEach(() => { jest.clearAllMocks(); });
Tenga en cuenta que esto borrará el recuento de llamadas de todas las funciones simuladas que tenga, pero probablemente sea la forma correcta.
fuente
Puede configurar Jest para restablecer los simulacros después de cada prueba colocando esto en su
jest.config.js
:module.exports = { resetMocks: true, };
Aquí está la documentación para este parámetro de configuración: https://jestjs.io/docs/en/configuration#resetmocks-boolean
fuente