如何在酶测试中测试React组件中的嵌套方法?

时间:2017-08-09 18:30:11

标签: reactjs testing sinon enzyme

我已将以下函数设置为React组件中的onClick:

firstFunction = (id) => {
    this.props.secondFunction(id);      
}

我希望能够测试单击第一个函数,然后单击第二个函数。我可以测试使用以下测试调用第二个函数,该测试将通过:

describe('events can be invoked', () => {
    it('has a onClick event that can be called', () => {
        let mockFirstInvocation = sinon.spy();
        let mockSecondInvocation = sinon.spy();
        let wrapper = shallow(<ButtonOpt onClick={mockFirstInvocation} secondFunction={mockSecondInvocation}) 
        wrapper.find('button').simulate('click'); 
        expect(mockSecondInvocation.calledOnce).to.be.true;
    })
});

但是,如果我添加这一行:

expect(mockFirstInvocation.calledOnce).to.be.true;

并且它被放置在mockSecondInvocation的期望之前,测试失败。

如何测试被调用的函数及其嵌套函数是否都被显式调用?

谢谢!

1 个答案:

答案 0 :(得分:0)

可以使用下面的代码行来测试第二个功能。

CREATE TABLE counter(id INTEGER PRIMARY KEY AUTOINCREMENT, success REAL, number_won_games REAL, number_all_games REAL);

CREATE TRIGGER counter_update_success AFTER UPDATE ON counter
BEGIN
    UPDATE counter set NEW.success=((NEW.number_won_games/NEW.number_all_games)*100.0);
END;

CREATE TRIGGER counter_create_success AFTER INSERT ON counter
BEGIN
    UPDATE counter set NEW.success=((NEW.number_won_games/NEW.number_all_games)*100.0);
END;