乐闻世界logo
搜索文章和话题

How to use Mock functionality in Jest? How to create Mock functions and mock modules?

2月21日 15:54

Jest's Mock functionality is an important tool for isolating dependencies and verifying behavior in tests:

1. Creating Mock Functions:

javascript
const mockFn = jest.fn(); mockFn('arg1', 'arg2'); expect(mockFn).toHaveBeenCalledWith('arg1', 'arg2'); expect(mockFn).toHaveBeenCalledTimes(1);

2. Mock Return Values:

javascript
const mockFn = jest.fn(); mockFn.mockReturnValue(42); mockFn.mockReturnValueOnce(10).mockReturnValueOnce(20); // Or use mockResolvedValue for Promises mockFn.mockResolvedValue('data');

3. Mock Implementation:

javascript
const mockFn = jest.fn((a, b) => a + b); // Or use mockImplementation mockFn.mockImplementation((a, b) => a * b);

4. Mock Modules:

javascript
jest.mock('./api', () => ({ fetchData: jest.fn(() => Promise.resolve('data')) })); import { fetchData } from './api';

5. Spy Functions:

javascript
const spy = jest.spyOn(object, 'method'); spy.mockRestore(); // Restore original function

Common Assertions:

  • toHaveBeenCalled(): Was called
  • toHaveBeenCalledWith(...args): Called with specific arguments
  • toHaveBeenCalledTimes(n): Number of calls
  • toHaveReturnedWith(value): Returned specific value
  • toHaveLastReturnedWith(value): Last returned value

Best Practices:

  • Mock external dependencies, not the code being tested
  • Clean up mocks after testing
  • Use jest.clearAllMocks() to clear call records
  • Use jest.restoreAllMocks() to restore original implementations
标签:Jest