如何在React中测试提供给子组件的回调

时间:2019-02-22 22:24:02

标签: javascript reactjs testing

我无法测试组件向其子级提供的回调。

过去,我所做的是:

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

对于功能组件来说,具有钩子的新功能是什么,这对我的测试方法来说是一个大问题。

0 个答案:

没有答案