To mock useRef in Jest, you can use the `jest.spyOn` method along with `React`’s `useRef` function. Here is an example of how you can do it:
// Import the necessary modules
import { useRef } from "react";
// Your component that uses useRef
function MyComponent() {
const ref = useRef();
// Code that uses the ref
return This is my component;
}
// Your test file
describe("MyComponent", () => {
it("should mock useRef", () => {
// Spy on the useRef function
const useRefSpy = jest.spyOn(React, "useRef");
// Mock the return value of the useRef function
useRefSpy.mockReturnValue({ current: "mockedRef" });
// Render your component
render();
// Assertions
expect(useRefSpy).toHaveBeenCalled();
expect(useRefSpy).toHaveBeenCalledWith();
// Clean up the spy
useRefSpy.mockRestore();
});
});
In this example, we first import the `useRef` function from the `react` module. Then, inside the `MyComponent` function, we use the `useRef` function to create a ref. After that, we have some code that uses the ref. Finally, in the test file, we import the necessary modules and define a test for the `MyComponent` component.
Inside the test, we use the `jest.spyOn` method to spy on the `useRef` function. This allows us to track its usage and control its return value. Then, we mock the return value of the `useRef` function by using the `mockReturnValue` method on the spy. In this case, we are mocking the ref to have a `current` property with the value `”mockedRef”`. Next, we render the `MyComponent` component. Finally, we assert that the `useRef` function has been called with the expected arguments and clean up the spy using the `mockRestore` method.