How to find a specific object key in jest
Sep 03 2022
//Updated Jun 22 2026
2 min read
We’ve all been there, writing a jest test and having that one case where we want to have a very specific key in an object.
our first attempt might be
it("should redirect to correct url if id is incorrect", () => { const mockFn = jest.fn()
mockRouter.query = { id: "id2", } mockRouter.push = mockFn
render(<Component>I am visible</Component>)
expect(mockFn).toHaveBeenCalledWith({ query: { id: "id1" }, })})This will throw us an error like this
Error: expect(jest.fn()) .toHaveBeenCalledWith(...expected)Solution
Since Jest 18 we are able to use objectContaining . This makes it super easy to check for 1 or more specific keys:
it("should redirect to correct url if id is incorrect", () => { const mockFn = jest.fn()
mockRouter.query = { id: "id2", } mockRouter.push = mockFn
render(<Component>I am visible</Component>)
expect(mockFn).toHaveBeenCalledWith( expect.objectContaining({ query: { id: "id1" }, }) )})this test will pass.
Alternative solutions
in the case that you only have a few keys you could also use expect.anything()
this would be used like so:
expect(mockFn).toHaveBeenCalledWith({ query: { id: "id1" }, key: expect.anything(), key2: expect.anything()})Conclusion
there are 2 options to find a specific key in objects. objectContaining and expect.anything()