tengo una función:
export class Processor { public static async process(info) { return Promise.resolve('item processed'); } } import { Processor } from "./processor"; export const execute = (event, context) => { const records = event.Records; records.map(async (record) => { return await processRecord(record.body.info); }); async function processRecord(info) { try { console.log('before process'); await Processor.process(info); console.log('after process'); } catch (e) { throw new Error('Processing error'); } } };Entonces tengo una prueba:
import { execute } from "./execute"; import { Processor } from "./processor"; jest.mock("./Processor"); const mockProcessor = jest.mocked(Processor, false); describe("Execute", () => { it("should process info", () => { const processSpy = jest.spyOn(mockProcessor, "process").mockResolvedValueOnce("test-return"); const result = await execute({Records: [{body: {info: "test-info"}}]}, {}); expect(processSpy).toHaveBeenCalled(); }); });La prueba falla en el espía de procesos, aunque se muestran los registros "antes del proceso" y "después del proceso". ¿Dónde cometí un error?
No necesita usar jest.mock('./Processor') , use jest.spyOn(Processor, 'process') es suficiente.
import { execute } from './execute'; import { Processor } from './processor'; describe('Execute', () => { it('should process info', async () => { const processSpy = jest.spyOn(Processor, 'process').mockResolvedValueOnce('test-return'); await execute({ Records: [{ body: { info: 'test-info' } }] }, {}); expect(processSpy).toHaveBeenCalled(); }); });