Unit testing 基本反应呈现测试:存在()与长度
在React组件的基本渲染测试中,哪种方法更可靠Unit testing 基本反应呈现测试:存在()与长度,unit-testing,reactjs,enzyme,Unit Testing,Reactjs,Enzyme,在React组件的基本渲染测试中,哪种方法更可靠 const wrapper=shallow(); expect(wrapper.exists()).to.equal(true); expect(wrapper.find('div').length).to.equal(1); 测试渲染子组件的方法也一样: const wrapper=shallow(); expect(wrapper.find(MyChildComponent.exists()).to.equal(true); expect(
const wrapper=shallow();
expect(wrapper.exists()).to.equal(true);
expect(wrapper.find('div').length).to.equal(1);
测试渲染子组件的方法也一样:
const wrapper=shallow();
expect(wrapper.find(MyChildComponent.exists()).to.equal(true);
expect(wrapper.find(MyChildComponent.length).to.equal(1);
我发现
exists()
更加惯用。但是我看到大多数人在测试中使用长度版本。如果有的话,有什么取舍呢?你甚至需要第一次检查吗?我认为,当您在组件上进行浅层操作时,包装器应该存在
如果您确实需要它,那么我更喜欢在第一个示例中使用exists()
,而不是查找孩子的div。如果您稍后将该div更改为span,您的测试用例将不必要地失败,即使我们只关心包装器的存在
对于第二个示例,使用.exists()
更有意义,因为MyChildComponent
在将来可能被渲染一次或多次,这取决于您的用例
当您只希望MyChildComponent
出现一次时,使用.length
为1是有意义的,这样当另一个开发人员出现并在组件中的其他地方呈现它时,测试就会失败
90%的时间我都使用.length
,因为通常情况下,它更合适,更不容易出错,因为要渲染的项目数量更精确。exists()
只是长度的糖分
exists() {
return this.length > 0;
}
因此,使用哪一个取决于您,就像您一样,我认为exists()
更具描述性,更喜欢使用它。链接已失效,新链接万岁: