uee*_*iie 8 javascript testing snapshot jestjs enzyme
我是使用React-Jest-Enzyme进行测试的新手,但是根据我收集到的所有信息,在我看来,大多数测试实际上都会测试React库是否中断,而不是我的实际业务逻辑.
我会给你一些例子,如果我错了,请纠正我:
这个策略有什么用?
从我看到它的主要目的是捕获我的代码的任何不需要的更改.它" stringify "我的组件树,只是注意到是否添加了任何新的换行符,对吧?
所以它主要用于那些我可能会意外按下键盘的情况?或其他人意外地弄乱我的代码?
我看到的大多数示例解释了你使用它们的方式是这样的:
const wrapper = mount(<MyComponeny />)
expect(wrapper.find(‘button’).simulate(‘click)).toHaveBeenCalledTime(1)
Run Code Online (Sandbox Code Playgroud)
我能从中获得什么价值?如果我模拟用酶的按钮点击simulate(‘click’),那么我应该期望它会触发点击事件.
我在这里测试的是什么?酶的功能?
还有setState方法酶给我们.如果wrapper.setState({value: ‘some value’)}想改变我的状态,为什么我会看到这样的用例:
wrapper.setState({value: ‘new value’)}
expect(wrapper.state(‘value’)).toBe(‘new value’)
Run Code Online (Sandbox Code Playgroud)
?
为什么我需要测试测试框架/额外的库?
这一切似乎都有点含糊不清
快照测试:
所以它主要用于那些我可能会意外按下键盘的情况?或其他人意外地弄乱我的代码?
如果你调整一个通用的组件/服务/实用程序,并且不注意它会影响一些意外的组件,例如.
现在它可以以一种好的方式影响它,例如修复组件中的意外文本 - 但快照使您能够快速查看所有受影响组件的更改.
Run Code Online (Sandbox Code Playgroud)const wrapper = mount(<MyComponeny />) expect(wrapper.find(‘button’).simulate(‘click)).toHaveBeenCalledTime(1)我能从中获得什么价值?
这只是一个简单的例子.这确实是一个非常糟糕的测试 - 它没有测试任何东西.通常你会测试更重要的东西,比如:
toHaveBeenCalledTime(1) 在某种过程中 - 例如,确保网络请求仅在整个点击流和其他触发期间完成一次.
为什么我会看到这样的用例:
Run Code Online (Sandbox Code Playgroud)wrapper.setState({value: ‘new value’)} expect(wrapper.state(‘value’)).toBe(‘new value’)?
这也是一个简单的示例,向您展示可以在React组件上设置状态.它实际上没有测试任何东西.
你可以做的是在一个组件上设置状态,并确保它呈现适量的孩子或者它呈现你期望的其他一些东西.
这也与快照有关 -
在组件上设置某个状态并创建快照,然后,当您处理此组件使用的服务和实用程序时,您可以确保它不会因该特定状态而中断.
| 归档时间: |
|
| 查看次数: |
623 次 |
| 最近记录: |