Estoy escribiendo una prueba de Jest. Necesito probar una función que llama a una función en otro archivo .js. Esta función llamada devuelve una promesa que se resuelve en una cadena. Cuando inicio la prueba me sale el error "file.function is not a function", donde en lugar de "file" tengo el nombre del archivo js importado y en lugar de "function" tengo el nombre de la función que devuelve el promesa.
Debajo de mi prueba:
test('test', () => { jest.mock('../file', () => { function: jest.fn().mockReturnValue('Returned String') }); myFunction(); expect().toBe(); });Explicación: en primer lugar, me burlé del módulo que contiene la función que devuelve una promesa. Con el segundo parámetro (de jest.mock) me burlé de la función contenida en el módulo burlado. A continuación, llamo a la función que quiero probar (esta función llamará a la función simulada). Finalmente, pongo a prueba las expectativas. Alguien puede ayudarme por favor. No se como puedo solucionarlo, gracias a todos.
jest.mock debe estar al mismo nivel que las importaciones. Si necesita probar varios casos, simplemente simule el valor devuelto/resuelto cada vez.
import { myFunction } from './fn'; import { function } from '../file'; jest.mock('../file', () => { function: jest.fn(), }); describe('myFunction tests', () => { describe('With returned string', () => { beforeEach(() => { function.mockReturnValue('Returned String'); }); it('should do sth', () => { myFunction(); // expect(...).toBe(...); }); }); describe('With returned number', () => { beforeEach(() => { function.mockReturnValue(7); }); it('should do other thing', () => { myFunction(); // expect(...).toBe(...); }); }); });