我无法测试组件向其子级提供的回调。
过去,我所做的是:
const component = ReactDOM.render(<Subject />, node);
const collaborator = ReactTestUtils.findRenderedComponentWithType(component, Collaborator);
collaborator.props.onSubmit(); // now I have a handle on the collaborator so I can call the callbacks it was given to my heart's content and assert what they do
但是问题是findRenderedComponentWithType
不适用于功能组件。
即如果协作者是这样实现的:
class Collaborator extends React.Component {
render() {
const { onSubmit } = this.props;
return <MyForm onSubmit={onSubmit} />;
}
}
findRenderedComponentWithType
将返回组件的句柄,但如果是这样实现的:
function Collaborator({ onSubmit }) {
return <MyForm onSubmit={onSubmit} />;
}
findRenderedComponentWithType
找不到!
有人测试过吗?我以为这就是我可以允许<Collaborator />
进化而无需更改<Subject />
的测试的方法:(
下面是一个代码框,演示:
https://codesandbox.io/s/qzy39n46wq
对于功能组件来说,具有钩子的新功能是什么,这对我的测试方法来说是一个大问题。