我在StateService
文件夹中有一个名为__mocks__
的模拟文件
export default {
goTo: jest.fn(),
goToNewTab: jest.fn(),
goToPreviousAppState: jest.fn(),
reload: jest.fn()
}
在测试中,我想监视goToNewTab
并检查是否已调用该函数。我现在正在做的就是将模拟文件导入到我的测试中,然后在我的测试本身中,我这样称呼“期望”:
expect(StateService.goToNewTab).toHaveBeenCalled();
但是期望值没有返回正值。
假设您在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。