Yangshun Tay
Yangshun Tay

Reputation: 53179

Stubbing window functions in Jest

In my code, I trigger a callback upon "OK" click of a window.confirm prompt, and I want to test that the callback is triggered.

In sinon, I can stub the window.confirm function via:

const confirmStub = sinon.stub(window, 'confirm');
confirmStub.returns(true);

Is there a way I can achieve this stubbing in Jest?

Upvotes: 30

Views: 37051

Answers (3)

BeetleJuice
BeetleJuice

Reputation: 40936

To eliminate the chances that the mocking would leak to other tests, I used a one-time mock:

jest.spyOn(global, 'confirm' as any).mockReturnValueOnce(true);

Upvotes: 12

pom421
pom421

Reputation: 1964

I just used Jest mock and it works for me :

   it("should call my function", () => {
      // use mockImplementation if you want to return a value
      window.confirm = jest.fn().mockImplementation(() => true)

      fireEvent.click(getByText("Supprimer"))

      expect(window.confirm).toHaveBeenCalled()
}

Upvotes: 14

Andreas Köberle
Andreas Köberle

Reputation: 111042

In jest you can just overwrite them using global.

global.confirm = () => true

As in jest every test file run in its own process you don't have to reset the settings.

Upvotes: 47

Related Questions