我在__mocks__
文件夹中有一个手动模拟,称为client.ts
。现在,在单元测试中,我呼叫jest.mock('./client')
。这可以正常工作,并且开玩笑地导入模拟文件夹。现在,我有一个方案(测试),需要覆盖此行为。我在单元测试中使用了mockImplementationOnce
。
import mockClient from './client';
(mockClient.getObject as jest.Mock).mockImplementationOnce(() => {
console.log('calling the mock of the mock');
return Promise.resolve('abcde');
});
现在,当我运行此测试时,Jest似乎仍将手动模拟加载到
__mocks__
文件夹中,而不是为此特定测试加载该模拟。我在这里想念什么吗? 最佳答案
这应该工作:
import mockClient from './client';
test('getObject', async () => {
mockClient.getObject.mockImplementationOnce(() => {
console.log('calling the mock of the mock');
return Promise.resolve('abcde');
});
await mockClient.getObject();
})
我认为在通话前使用
mockImplementationOnce
是一个好习惯,以避免在beforeEach
中出现任何重载或任何其他冲突。