У меня есть функция, которая вызывается внутри 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'.И я думаю, что это причина того, почему «предвидеть (props.getOutstandingTasks) .toHaveBeenCalled ()» не удается, поэтому он вызывается внутри componentDidMount.
Существует ли способ сброса функций, вызываемых внутри componentDidMount?