组件componentDidMount

时间:2019-02-07 13:30:08

标签: javascript reactjs enzyme

我有一个在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内部调用的功能?

0 个答案:

没有答案