Después de actualizar la versión de Jest a la última, mis pruebas unitarias para tubería están fallando. El error inicial que estaba recibiendo era:
jest Cannot set property of [object Object] which has only a getter
Este error no estaba presente en la versión anterior (24).
Encontré un problema similar pero desafortunadamente la solución aplicada no ayudó en mi caso.
Esta es mi pipa:
@Pipe({ name: 'standPermissionIds', }) export class StandPermissionIdsPipe implements PipeTransform { transform(value: Stands): StandIdentifiers | undefined { if (!value) { return; } return extractStandIdentifiers(value); } }
y pruebas para eso (antes de aplicar la solución para deshacerse del error 'captador'):
import { StandPermissionIdsPipe } from '@sam-hmi/shared/pipes/stand-permission-ids.pipe'; import { extractStandIdentifiers } from '@sam-hmi/utils'; describe('StandPermissionIdsPipe', () => { let pipe; beforeEach(() => { pipe = new StandPermissionIdsPipe(); (extractStandIdentifiers as jest.Mock) = jest.fn(); }); it('should call extractStandIdentifiers and return the value', () => { pipe.transform('test'); expect(extractStandIdentifiers).toBeCalledWith('test'); }); });
y después de aplicarlo:
import { StandPermissionIdsPipe } from '@sam-hmi/shared/pipes/stand-permission-ids.pipe'; describe('StandPermissionIdsPipe', () => { let pipe; let extractStandIdentifiers; beforeEach(() => { pipe = new StandPermissionIdsPipe(); extractStandIdentifiers = jest.mock('@sam-hmi/utils', () => ({ ...jest.requireActual('@sam-hmi/utils'), })); }); it('should call extractStandIdentifiers and return the value', () => { pipe.transform('test'); expect(extractStandIdentifiers).toHaveBeenCalledWith('test'); }); });
En ese caso, el mensaje de error se trata de otra cosa, pero probablemente porque arruiné la aplicación de la solución:
Y así es como se ven los extractStandIdentifiers
:
export const extractStandIdentifiers = (stand: Stands): StandIdentifiers => { const { standId, terminalFk, apronFk, stationFk } = stand; return { standId, terminalId: terminalFk ? terminalFk.terminalId : undefined, apronId: apronFk ? apronFk.apronId : undefined, stationId: stationFk ? stationFk.stationId : undefined, }; };
¿Puede alguien explicarme cómo resolver esto y qué ha cambiado y por qué comencé a recibir estos errores en la versión más nueva de Jest?