Estoy tratando de probar una llamada a una función definida en el objeto de ventana global. He mirado varios ejemplos, pero todavía no puedo ejecutar un caso de prueba simple.
api.ts
import "./global.d"; const verifier = window.Verifier; export class Api { constructor(private readonly id: string) {} public fetchData() { return new Promise<object>((resolve, reject) => { verifier.request({ request: { id: this.id }, onSuccess: (data: object) => { resolve(data); }, onFailure: () => { reject("Error!"); } }); }); } }Api.test.ts
import { Api } from "./Api"; let windowSpy: any; describe("Test Apis", () => { beforeEach(() => { windowSpy = jest.spyOn(window, "window", "get"); }); afterEach(() => { windowSpy.mockRestore(); }); it("should call the function", () => { const mockedReplace = jest.fn(); windowSpy.mockImplementation(() => ({ Verifier: { request: mockedReplace } })); const api = new Api("123"); api.fetchData(); expect(mockedReplace).toHaveBeenCalled(); }); });global.d.ts
import { Verifier } from "./verifier"; declare global { interface Window { Verifier: Verifier; } }verificador.d.ts
type RequestPayload = { request: { id: string; }; onSuccess: (data: object) => void; onFailure: () => void; }; type verifyCode = number; export interface Verifier { request: (requestPayload: RequestPayload) => verifyCode; }También he creado un ejemplo de codesandbox para una fácil referencia https://codesandbox.io/s/cranky-mccarthy-2jj622?file=/src/verifier.d.ts