Necesito probar una función que abre una nueva pestaña en el navegador
openStatementsReport(contactIds) {
window.open(`a_url_${contactIds}`);
}
Me gustaría simular la open
función de la ventana para poder verificar que se pasa la URL correcta a la open
función.
Usando Jest, no sé cómo burlarme de window
. Traté de configurar window.open
con una función simulada pero de esta manera no funciona. A continuación se muestra el caso de prueba
it('correct url is called', () => {
window.open = jest.fn();
statementService.openStatementsReport(111);
expect(window.open).toBeCalled();
});
pero me da el error
expect(jest.fn())[.not].toBeCalled()
jest.fn() value must be a mock function or spy.
Received:
function: [Function anonymous]
¿Qué debo hacer con el caso de prueba?
Solución del problema
El siguiente método funcionó para mí. Este enfoque me permitió probar un código que debería funcionar tanto en el navegador como en Node.js, ya que me permitió window
configurar undefined
.
Esto fue con Jest 24.8 (creo):
let windowSpy;
beforeEach(() => {
windowSpy = jest.spyOn(window, "window", "get");
});
afterEach(() => {
windowSpy.mockRestore();
});
it('should return https://example.com', () => {
windowSpy.mockImplementation(() => ({
location: {
origin: "https://example.com"
}
}));
expect(window.location.origin).toEqual("https://example.com");
});
it('should be undefined.', () => {
windowSpy.mockImplementation(() => undefined);
expect(window).toBeUndefined();
});
No hay comentarios.:
Publicar un comentario