If you define a mock with const myFunctionMock = vi.fn();
its type is Mock<Procedure>
, which is a generic type.
For example, do not write this, or Typescript won't be able to detect that you passed an object instead of a string to mockResolvedValue
:
const windowMethodMock = vi.fn();
Object.defineProperty(global, 'window', {
value: {
windowMethod: windowMethodMock,
},
});
test('...', () => {
windowMethodMock.mockResolvedValue({ msg: 'a string' }); // here, Typescript is not able to detect that the type is wrong
});
Instead, you can write vi.mocked(window.windowMethod).mock...
, and Typescript will check that you correctly pass a string to mockResolvedValue
:
Object.defineProperty(global, 'window', {
value: {
windowMethod: vi.fn(),
},
});
test('...', () => {
vi.mocked(window.windowMethod).mockResolvedValue('a string');
});