酶 - 如何从容器中获取函数的实例,作为prop传递给组件?

时间:2017-02-08 00:21:05

标签: reactjs enzyme

我有一个容器组件(MyContainer),其函数通常作为支柱传递给MyComponent

export default class MyContainer extends Component {

    ...
    someFunction(e){
        ...
    }
    ...

    render() {
        return (
            <MyComponent
                someFunction={this.someFunction}
            />
        );
    }
}

我的测试应该确保MyComponent作为支柱接收此功能 - 首先,我该怎么做?其次,我是否(我可以)进行任何检查以确保该支柱是1)功能和2)特定功能&#39; someFunction&#39;?

2 个答案:

答案 0 :(得分:2)

这个想法是基于调用someFuction的{​​{1}}道具,那么,检查MyComponent的{​​{1}}方法是否被调用:

someFunction

答案 1 :(得分:1)

您可以使用jest.fn()创建mock function,然后determine if it was been called

例如,如果点击按钮会触发someFunction,则可以按照以下方式进行测试:

it('calls the someFunction handler when the button is clicked', () => {
  const mockFunction = jest.fn();
  const wrapper = shallow(<MyComponent someFunction={mockFunction} />);
  wrapper.find('button').simulate('click');
  expect(mockFunction).toHaveBeenCalled();
});