我在__mocks__文件夹中有一个名为StateService的模拟文件
export default {
goTo: jest.fn(),
goToNewTab: jest.fn(),
goToPreviousAppState: jest.fn(),
reload: jest.fn()
}在我的测试中,我想要侦测goToNewTab并检查函数是否已被调用。我现在正在做的是将模拟文件导入到我的测试中,然后,在我的测试本身中,我像这样调用expect:
expect(StateService.goToNewTab).toHaveBeenCalled();但是expect不会返回正值。
发布于 2020-04-15 21:23:21
假设您有一个services/StateService.js格式的文件(为简单起见,我将只定义goToNewTab服务):
function goToNewTab() {
// Your logic here.
}
export default {
goToNewTab
};然后,在services/__mocks__/StateService.js中创建此模块的模拟
export default {
goToNewTab: jest.fn()
};现在,您正在测试一个调用goToNewTab服务的模块。假设它被放在utils/navigation.js中
import StateService from '../services/StateService';
export default function() {
StateService.goToNewTab();
}使用模拟服务的此类模块的测试将如下所示:
import StateService from '../services/StateService';
import navigation from './navigation';
jest.mock('../services/StateService');
it('Should mock call', () => {
navigation();
expect(StateService.goToNewTab).toHaveBeenCalled();
});请注意,如果在测试中需要StateService模块,则需要显式调用模块的jest.mock,如documentation中所述。
https://stackoverflow.com/questions/61210187
复制相似问题