前端需要写自动化测试吗?那又该怎么写呢?【建议收藏】(二)

简介: 前端需要写自动化测试吗?那又该怎么写呢?【建议收藏】

测试覆盖率

jest⾃自带覆盖率,如果⽤用的 mocha,需要使⽤用 istanbul来统计覆盖率。(所以我推荐jest)

npm run test:unit

336847053361451cb198accb1415ee52.png

这个明显是不通过的,需要将途中的3改为正确的‘12’。

改完后再次执行命令。

4b9fd1b1ec6b4290b574289e76518f84.png

这么一来测试是通过了,但是好像无法直观看到覆盖率,所以我们来对package.json中的jest进行下修改,在下图的位置中:

de7224493da441eba926f9be9d5a00c7.png

改为:

"jest": {
    "collectCoverage": true,
    "collectCoverageFrom": ["src/**/*.{js,vue}"],
    "moduleFileExtensions": [
      "js",
      "json",
      "vue"
    ],
    "transform": {
      "^.+\\.js$": "<rootDir>/node_modules/babel-jest",
      ".*\\.(vue)$": "<rootDir>/node_modules/vue-jest"
    },
    "moduleNameMapper": {
      "^@/(.*)$": "<rootDir>/src/$1"
    },
    "snapshotSerializers": [
      "<rootDir>/node_modules/jest-serializer-vue"
    ],
    "testURL": "http://localhost"
  }

倘若有个jest.config.js那么就在 moduleFileExtensions 上一行加入,这个文件是对jest的配置(没有不必改):


"collectCoverage": true,
"collectCoverageFrom": ["src/**/*.{js,vue}"]

改好后,我们再来执行下npm run test:unit命令,

b27ff7423869487da4b61c94b1ee740d.png

到此,我们就能清晰看见测试的一个覆盖情况!这个覆盖率会生成一个报告,生成的报告文件在coverage目录下,打开可以看到这么个鬼东西:

fbb6668d51c6460e81028035c2534e8b.png

这么一来,测试代码覆盖情况就一览无遗了。

这个测试报告可以很精确的看到我们哪些没测试,哪些测试了。

我在zhifeiji.vue里加点东西不测试,来看看结果:

<template>
  <div>
    <span id="msg">{{ msg }}</span>
    <span>{{ msg1 }}</span>
    <button class="btn" @click="changeMsg">点我</button>
  </div>
</template>
<script>
export default {
  data() {
    return {
      msg: "vue test",
      msg1: "你好",
      msg2:'这个不测试'
    };
  },
  created() {
    this.msg = "aftermounted";
    this.msg2 = '不测试扣了我100块';
  },
  mounted() {
    this.msg1 = "测试下vue组件";
  },
  methods: {
    changeMsg() {
        if(this.msg === '1'){
            this.msg = "click false";
        }else{
            this.msg = "click over";
        }
    },
  },
};
</script>

上面代码中msg2有关的都是没测试的,执行下测试命令看报告:

85d37d9778364d908032c9076f94cd7f.png

红框部分可见着这次zhifeiji.vue覆盖率没有100%了,上main蓝色的我们可以点击进去。

f8eb50ca843e41cbb939e9f2748a057a.png

fc4930eec8e84423b1fd94497a8d4568.png

一步步点进来,会来到被测试的代码文件。

如何测试不通过就阻止代码git提交

安装husky:

cnpm i husky –save
# yarn、cnpm、npm 随意

配置husky,在package.json配置:

"husky": {
    "hooks": {
      "pre-commit": "npm test",
      "pre-push": "npm test",
      "...": "..."
    }
}

当然这是文档上的案例,我们改下:

"husky": {
    "hooks": {
      "pre-commit": "npm run test:unit"
    }
}

代表再提交(commit)前先执行npm run test:unit。

验证

修改测试代码文件zhifeiji.spec.js:

由:

it("测试新建完毕后,create生命周期后的数据", () => {
    //created
    let vm = new Vue(zhifeijiComp).$mount();
    expect(vm.msg).toBe("aftermounted");
});

改为:

it('测试新建完毕后,create生命周期后的数据',() => {
  //created
    let vm = new Vue(zhifeijiComp).$mount()
    expect(vm.msg).toBe('aftermounted1')
})

这样测试肯定是不通过的。

6bb2792d57304a3d982e41aa452636f7.png

这时,测试不通过,我们再来提交代码,add后再commit:

bd1ba17b95e649b48a764b7f113a1a41.png

可见commit是失败了,没有通过!


Tip:如果你们这么配置husky不生效,请降低husky版本或者使用新的husky的方式,husky在6.0.0版本开始就使用了新的配置方法,具体看此文:https://blog.csdn.net/MrWeb/article/details/119878688


这时我们如果想让他通过的话就得改代码了,让其正确了才能提交,这样才是安全可靠的一份代码。


修改操作:

1.注释掉tests目录下e2e中的test.js,e2e我们后面讲

6f6a0a647d1b4908ab4ea04a0e78aedd.png

2.example.spec.js中的3修改为’12’

3.zhifeiji.spec.js的aftermounted1恢复为aftermounted

经过这三步操作,我们就算是解决了测试的报错,然后commit:

4720b78e577146ff8700792a7ab7875c.png


代码提交成功!



相关文章
|
5月前
|
前端开发 JavaScript jenkins
构建高效前端项目:从模块化到自动化
【2月更文挑战第13天】 随着Web技术的不断进步,前端项目的复杂性日益增加。为了确保可维护性和性能,前端工程师必须采用模块化和自动化的策略来优化开发流程。本文将探讨如何使用现代前端工具和最佳实践来构建一个高效的前端项目架构,包括模块打包、代码分割和持续集成等方面。
|
5月前
|
前端开发 JavaScript API
前端 npm anywhere 与 npm now 网页随时真机测试
前端 npm anywhere 与 npm now 网页随时真机测试
103 0
|
4月前
|
JavaScript 前端开发 安全
在众多的测试工具中,Cypress以其强大的端到端测试能力和与TypeScript的完美结合,成为了前端开发者的首选
【6月更文挑战第11天】Cypress结合TypeScript,打造前端测试新体验。TypeScript增强代码可读性和稳定性,Cypress提供强大端到端测试,二者结合提升测试准确性和可靠性。通过类型定义、自定义命令和断言,优化测试代码;Cypress模拟真实用户操作、时间旅行功能及内置调试工具,确保应用功能性能。推荐前端开发者使用TypeScript+Cypress进行端到端测试。
59 2
|
2月前
|
前端开发 JavaScript 测试技术
React 与前端自动化测试也太重要啦!各种测试框架助力确保应用质量,快来开启优质开发之旅!
【8月更文挑战第31天】随着前端技术的发展,React 成为了构建用户界面的热门选择。然而,随着应用复杂性的增加,确保应用质量变得至关重要。本文介绍了前端自动化测试的重要性,并详细综述了常用的测试框架如 Jest、Enzyme 和 Cypress,以及如何通过它们进行高效的 React 组件测试。通过遵循最佳实践,如编写可维护的测试用例、覆盖关键场景、集成 CI/CD 流程和进行性能测试,可以显著提高应用的稳定性和可靠性。
43 0
|
3月前
|
前端开发 数据管理 测试技术
前端自动化测试
前端自动化测试
|
2月前
|
JSON 前端开发 JavaScript
革新Admin.NET框架:前端体验飞跃与代码生成自动化的双重革命,引领高效开发新时代!
【8月更文挑战第3天】Admin.NET是一款专为现代企业应用打造的高效框架,凭借强大的后台管理和灵活的扩展性深受开发者喜爱。本文探讨如何优化其前端体验与开发效率。首先,通过采用Flexbox和CSS Grid等技术实现响应式布局重构,确保了不同设备上的一致体验。其次,引入Vue.js或React实现组件化开发,提高代码复用性和维护性。再者,利用Webpack等工具进行性能优化,提升页面加载速度。此外,开发了代码生成器以自动生成CRUD模块,极大提高了开发效率。这些改进使Admin.NET前端开发更高效、灵活且易于维护。
30 0
|
5月前
|
前端开发 测试技术
前端自动化测试中的快照测试原理
快照测试用于前端自动化测试,通过比较当前应用状态与预存预期快照来检测UI变化。流程包括设置测试环境、捕获屏幕快照、保存预期快照、比较快照及处理差异。当快照比较出现差异时,测试工程师审查判断是否为预期变化或错误,确保应用一致性。这种方法在重构、样式更改和跨浏览器测试时提供有效回归测试,减少手动验证工作。
|
5月前
|
数据采集 监控 前端开发
前端自动化测试
前端自动化测试通过脚本和工具提升开发效率,确保应用在不同环境的品质和一致性。关键方面包括单元测试(如Jest、Mocha)、集成测试(Selenium、Puppeteer)、UI测试、快照测试及持续集成工具(Jenkins、Travis CI)。遵循确定测试范围、编写可维护代码、频繁运行测试和监控结果的最佳实践,可增强代码质量,减少错误。
|
5月前
|
缓存 监控 前端开发
【Flutter前端技术开发专栏】Flutter应用的性能调优与测试
【4月更文挑战第30天】本文探讨了Flutter应用的性能调优策略和测试方法。性能调优对提升用户体验、降低能耗和增强稳定性至关重要。优化布局(避免复杂嵌套,使用`const`构造函数)、管理内存、优化动画、实现懒加载和按需加载,以及利用Flutter的性能工具(如DevTools)都是有效的调优手段。性能测试包括基准测试、性能分析、压力测试和电池效率测试。文中还以ListView为例,展示了如何实践这些优化技巧。持续的性能调优是提升Flutter应用质量的关键。
97 0
【Flutter前端技术开发专栏】Flutter应用的性能调优与测试
|
5月前
|
前端开发 测试技术 持续交付
【Flutter 前端技术开发专栏】Flutter 中的 UI 测试与自动化测试
【4月更文挑战第30天】本文探讨了 Flutter 应用中UI测试和自动化测试的重要性,包括保障质量、提高效率和增强开发信心。Flutter提供`flutter_test`库进行Widget测试,以及`flutter_driver`进行集成测试。UI测试涵盖界面布局、交互和状态变化的验证,最佳实践建议尽早引入测试、保持用例简洁,并结合手动测试。未来,随着Flutter技术发展,UI测试和自动化测试将更加完善,助力开发高质量应用。
147 0
【Flutter 前端技术开发专栏】Flutter 中的 UI 测试与自动化测试

热门文章

最新文章

下一篇
无影云桌面