我有一个在componentDidMount内部调用的函数,如下所示:
componentDidMount() {
this.props.getTasks(123);
}
此函数也称为另一个函数,如下所示:
handleCloseDismissModal = () => {
if (currentAction.currentAction.isComplete) {
this.props.getOutstandingTasks(123);
}
};
我的测试文件中有:
it('should call getOutstandingTasks on componentDidMount', () => {
expect(props.getOutstandingTasks).toHaveBeenCalledWith(123);
});
,这很好。当我如下测试“ handleCloseDismissModal”时:
it('should handle handleCloseDismissModal when task is completed', () => {
instance.handleCloseDismissModal();
expect(props.getOutstandingTasks).toHaveBeenCalled();
});
我的道具就像这样:
const props =
...
currentAction: {
currentAction: {
isComplete: false,
task: {}
}
},
...
let wrapper;
let instance;
beforeEach(() => {
wrapper = shallow(<Identity {...props} />);
instance = wrapper.instance();
});
我希望“任务完成时应处理handleCloseDismissModal”测试会失败,因为默认情况下“ isComplete”的值设置为false。但这不是因为在调用实例时也是如此,componentDidMount也被称为“ getOutstandingTasks”。而且我认为这就是'expect(props.getOutstandingTasks).toHaveBeenCalled()'不会失败的原因,因此它在componentDidMount内部被调用。
是否可以重设componentDidMount内部调用的功能?