我正在使用Jest v16.0.1,react-test-renderer v15.4.0和react-addons-test-utils v15.4.0测试React组件.
该组件已呈现一个按钮:
<button type="button" className="btn btn-lg btn-primary btn-danger" disabled={this.state.cancelButtonDisabled} onClick={() => this.handleCancel()} ref="cancelButton" >Cancel</button>);
在我的测试中,我正在渲染组件:
const component = renderer.create( <MyComponent /> ); const instance = component.getInstance(); // This works but is ugly component.toJSON().children[1].children[0].props.onClick(); // This doesn't work ReactTestUtils.Simulate.click(instance.refs.cancelButton); let tree = component.toJSON(); expect(tree).toMatchSnapshot();
模拟点击此按钮的推荐方法是什么?您可以遍历组件的JSON表示,但看起来它们应该是更好的方法.
在我使用ReactTestUtils.renderIntoDocument之前,您可以使用refs将组件的引用传递给ReactTestUtils.Simulate.click
我已经看到了这个问题 – How to interact with components rendered by ReactTestRenderer / Jest但我认为API已经改变,因为我的组件实例没有find()方法.