新到一个公司,要求单元测试覆盖率达50%以上,我们都是后补的单测,其实单测的意义是根据需求提前写好,驱动开发,代替手动测试。然鹅这只是理想。。。
这里总结一下各种遇到的单测场景
- 挂载组件,调用elementui, mock函数
```javascript
describe('页面验证', () => {
const wrapper = getVue({
component: onlineFixedPrice,
callback(Vue) {
Vue.use(elementUi)
},
mocks: {
$route: {
query: {
id: '13945416091902200'
}
},
$store: {
state: {
name: 'meimei'
}
},
$refs: {
form: {
height: 300
}
},
$message: {
error() {
return jest.fn()
}
}
}
})
}
- 测试接口:
jest.fn(),jest.mock()和jest.spyOn(), 都能创建mock函数,在实际项目的单元测试中:
1)jest.fn()常被用来进行某些有回调函数的测试;
2)jest.mock()可以mock整个模块中的方法,当某个模块已经被单元测试100%覆盖时,使用jest.mock()去mock该模块,节约测试时间和测试的冗余度是十分必要;
3)当需要测试某些必须被完整执行的方法时,常常需要使用jest.spyOn()。
这些都需要根据实际的业务代码灵活选择
```javascript
<!-- hello.js -->
<script>
methods: {
sayHello() {
this.$refs.form.validate(valid => {
this.axios('getName', {
id: '123'}, ()=> {
this.name = res.data.name
})
})
}
}
</script>
<!