我最近开始编程。我在一个使用React进行编程的团队中,并使用Enzyme,Mocha和Chai进行单元测试。请参阅下面的软件包版本。
我的团队坚持认为每个组件的单元测试文件应进行以下测试:
beforeEach(() => {
component = mount(<MyComponent />)
})
it('renders with correct properties', () => {
component.setProps({
height: 100,
width: 500,
placeholder: 'Some value here'
})
expect(component.prop('height')).to.equal(100)
expect(component.prop('width')).to.equal(500)
expect(component.prop('placeholder')).to.equal('Some value here')
})
测试到此结束。对我来说,这个测试看起来就像是在测试React设置道具。我觉得我们可以相信React在做什么,而应该测试我们如何使用React渲染组件。我宁愿在其他props,状态以及组件作为props结果的渲染方式上测试prop值的影响。
但是我是新手,我的团队认为我的担心不对,所以我想检查一下:上述测试用例是否有价值?这是好习惯吗?
相关问题
包装
答案 0 :(得分:1)
完全同意-测试React库本身的行为毫无意义。在我们的团队中,我们使用Jest的快照测试作为初始基本测试来检查渲染,然后在此之上进行大量的状态转换测试。这可能对您有帮助,因为您似乎正在寻找一种“ 健全性检查,它会在我们检查其他内容之前在其基本预期输出中呈现”测试。因此,我们将按照您所说的执行mount
,然后我们的期望是:
expect(toJson(component)).toMatchSnapshot();
通过执行toJson
,与不进行toJson
相比,您至少可以以更易于理解的形式读取快照的输出。
有pros和cons可以将快照测试合并到您的项目中-有些人说这太过分了,有些人觉得它很有用。就我个人而言,我发现查看将来添加的任何代码是否会破坏现有的渲染很有用,从而使我的单元测试真正有用,并且减少了对手动测试的依赖。阅读this thread,其中详细介绍了快照测试。