写单元测试的好处
- 减少最终项目bug数量
- 对于已测试通过的逻辑点,你能很肯定的说,这没有bug
- 避免修改某个功能点,而影响到了其他功能点而不自知
- 编写单元测试的过程,可能会让你发现遗漏的逻辑点,完善这些逻辑点,能让你的代码更健壮
- 生成测试覆盖率报告,当有足够的测试覆盖率,你自己放心,别人用着也安心
写单元测试的坏处
看了前面写的好处,你是否认为,写,以后我所有代码都写单元测试? 如果,有产生过这种想法,那么我再说说写单元测试的坏处:耗时,非常耗时。可能你写一个功能花了 1小时,但你再写个单元测试可能需要额外再花3小时
为什么这么耗时?
- 大部分前端应该都没有过多关注过,前端的单元测试框架,所以不熟,非常的不熟练
- 前端编写单元测试,可能还需要在已完成的代码中,再补充一些东西,用来在单元测试代码中,获取到界面元素,从而进行断言
- 编写单元测试,还需要知道如何mock数据。你没看错,单元测试也需要mock数据,你能想象当前调用一个列表接口查询的时候,同样的条件,每次都是不同的结果吗?所以,mock数据,在单元测试中很重要。要mock出各种情况的数据,当然也要花实现。
单元测试能减少bug吗?
单元测试,不能减少开发中的bug。
- 开发中的bug数量,并不由是否有单元测试决定,而是看逻辑是否严谨,写代码时是否足够细心
当然,如果你采用的是TDD开发模式,那能最大限度的避免,开发中逻辑不严谨问题
单元测试,能减少最终产物的bug。
至于为什么说,能减少最终产物的bug,是因为你有单元测试,那么,你考虑到了的逻辑点,基本都会被单元测试覆盖了,而只要单元测试能通过,那至少表明,你考虑到的逻辑点是无问题的。最终产物的bug自然就会减少。
那么到底是否应该写单元测试呢?
- 时间不足的时候,不写
- 时间充足,尽量写
个人了解过的,vue开发有哪些单元测试框架?
vitestPlaywright
应该选择哪种测试框架?
vitest: 适用于组件测试,与代码逻辑覆盖测试Playwright:适用于界面测试
应该避免的误区
应该避免用单元测试来测试交互效果和响应式,个人认为单元测试只适合测试业务逻辑
参考资料
Mocking File Upload in Vue with Jest | Zaengle Corp
【译】诉诸 Vitest、Storybook 和 Playwright 进行现代化前端测试 - 掘金 (juejin.cn)