Sometimes, we want to mock the JavaScript window object using Jest.
In this article, we’ll look at how to mock the JavaScript window object using Jest.
How to mock the JavaScript window object using Jest?
To mock the JavaScript window object using Jest, we can call the jest.spyOn method.
For instance, we write
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();
});
to create the windowSpy with jest.spyOn.
And then we call windowSpy.mockImplementation with a function that returns a mocked window object.
Then we call expect to check the value of the mocked window.location.origin property in the test.
Likewise, we call mockImplementation with a callback that returned undefined in the 2nd test.
Then window would be undefined in the 2nd test.
We call windowSpy.mockRestore after each test to restore it to the original value.
Conclusion
To mock the JavaScript window object using Jest, we can call the jest.spyOn method.