Tengo una configuración similar a esta pregunta, pero la respuesta de burla parcial no funciona para mí.
Tengo un archivo 'FiscalYear.jsx' que contiene una clase FiscalYear y algunas funciones relacionadas que no son de clase, por ejemplo
export class FiscalYear { constructor(fy) { //does stuff } // other functionality } export function getFY(offset) { // does stuff return new FiscalYear(fy); } Quiero que mi prueba Jest para la función getFY simplemente verifique que se haya llamado al constructor FiscalYear con el parámetro correcto. Usé burla parcial en mi archivo de prueba para lograr esto:
import { FiscalYear, getFY } from '../FiscalYear'; jest.mock('../FiscalYear', () => { const originalModule = require.requireActual('../FiscalYear'); return { ...originalModule, FiscalYear: jest.fn().mockImplementation((a) => { }) }; }); test("getFY", () => { getFY(2); expect(FiscalYear).toHaveBeenCalled(); }); Actualizaré toHaveBeenCalled a toBeCalledWith una vez que haga que realmente llame a la función. Sin embargo, actualmente la prueba falla con
expect(jest.fn()).toHaveBeenCalled() Expected number of calls: >= 1 Received number of calls: 0 Puse un archivo console.log en el constructor real y confirmé que la función getFY lo está llamando en lugar del constructor simulado.
¿Cómo hacer que esto funcione? ¿Es un mal diseño tener estos dos en el mismo archivo? Totalmente nuevo en JavaScript, así que si esto es una mala práctica, házmelo saber.