我应该验证在单元测试中安装组件后是否设置了道具吗? (使用酶,摩卡,柴)

时间:2019-07-16 19:49:25

标签: reactjs unit-testing mocha enzyme chai

我最近开始编程。我在一个使用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值的影响

但是我是新手,我的团队认为我的担心不对,所以我想检查一下:上述测试用例是否有价值?这是好习惯吗?

相关问题

包装

  • “酶”:“ ^ 3.3.0”,
  • “ enzyme-adapter-react-16”:“ ^ 1.1.1”,
  • “摩卡”:“ ^ 5.0.0”,
  • “柴”:“ 3.5.0”

1 个答案:

答案 0 :(得分:1)

完全同意-测试React库本身的行为毫无意义。在我们的团队中,我们使用Jest的快照测试作为初始基本测试来检查渲染,然后在此之上进行大量的状态转换测试。这可能对您有帮助,因为您似乎正在寻找一种“ 健全性检查,它会在我们检查其他内容之前在其基本预期输出中呈现”测试。因此,我们将按照您所说的执行mount,然后我们的期望是:

expect(toJson(component)).toMatchSnapshot();

通过执行toJson,与不进行toJson相比,您至少可以以更易于理解的形式读取快照的输出。

proscons可以将快照测试合并到您的项目中-有些人说这太过分了,有些人觉得它很有用。就我个人而言,我发现查看将来添加的任何代码是否会破坏现有的渲染很有用,从而使我的单元测试真正有用,并且减少了对手动测试的依赖。阅读this thread,其中详细介绍了快照测试。