una tablas tabla script ejemplos dinamicas descargar definicion datos con caracteristicas agregar javascript mocking jestjs

tablas - ¿Cómo burlarse del objeto de la ventana de JavaScript usando Jest?



javascript pdf (3)

En lugar de usar window global

it(''correct url is called'', () => { global.open = jest.fn(); statementService.openStatementsReport(111); expect(global.open).toBeCalled(); });

También podrías intentar

const open = jest.fn() Object.defineProperty(window, ''open'', open);

Necesito probar una función que abre una nueva pestaña en el navegador

openStatementsReport(contactIds) { window.open(`a_url_${contactIds}`); }

Me gustaría burlarme de la función de apertura de la ventana para poder verificar que la URL correcta se haya pasado a la función de apertura.

Usando Jest, no sé cómo burlarse de la ventana. Intenté 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 para el caso de prueba? Cualquier sugerencia o consejo son apreciados.


Puedes probar esto:

import * as _Window from "jsdom/lib/jsdom/browser/Window"; window.open = jest.fn().mockImplementationOnce(() => { return new _Window({ parsingMode: "html" }); }); it("correct url is called", () => { statementService.openStatementsReport(111); expect(window.open).toHaveBeenCalled(); });


También podemos definirlo utilizando global en setupTests

// setupTests.js global.open = jest.fn()

Y llámalo usando global en la prueba real:

// yourtest.test.js it(''correct url is called'', () => { statementService.openStatementsReport(111); expect(global.open).toBeCalled(); });