一篇超详细的vue项目前端自动化测试教学!(二)

简介: 一篇超详细的vue项目前端自动化测试教学!

测试覆盖率

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月前
|
资源调度 前端开发 JavaScript
构建高效前端项目:现代包管理器与模块化的深度解析
【2月更文挑战第21天】 在当今快速演变的前端开发领域,高效的项目管理和代码组织已成为成功交付复杂Web应用的关键。本文将深入探讨现代前端包管理器如npm, yarn和pnpm的工作原理,以及它们如何与模块化编程实践(例如CommonJS、ES6模块)协同工作以优化开发流程。我们将剖析这些工具的内部机制,了解它们如何解决依赖冲突,提高安装速度,并保证项目的健壮性。同时,本文还将介绍模块化编程的最佳实践,包括代码拆分、重用和版本控制,帮助开发者构建可维护且性能卓越的前端项目。
|
1月前
|
监控 JavaScript 前端开发
在生产环境中测试和监控Vue项目的方法有哪些?
在生产环境中测试和监控Vue项目的方法有哪些?
24 4
|
1月前
|
缓存 前端开发 JavaScript
Vite 构建流程大揭秘:快速构建前端项目的秘密武器
Vite 构建流程大揭秘:快速构建前端项目的秘密武器
|
1月前
|
前端开发 JavaScript jenkins
构建高效前端项目:从模块化到自动化
【2月更文挑战第13天】 随着Web技术的不断进步,前端项目的复杂性日益增加。为了确保可维护性和性能,前端工程师必须采用模块化和自动化的策略来优化开发流程。本文将探讨如何使用现代前端工具和最佳实践来构建一个高效的前端项目架构,包括模块打包、代码分割和持续集成等方面。
|
2月前
|
缓存 JavaScript 前端开发
IDEA启动VUE前端项目
IDEA启动VUE前端项目操作流程
|
1月前
|
IDE Linux 编译器
【Linux】项目自动化构建工具 —— make/Makefile
【Linux】项目自动化构建工具 —— make/Makefile
|
17天前
|
前端开发 应用服务中间件 nginx
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
78 0
|
1月前
|
IDE 小程序 Linux
【linux】Linux项目自动化构建工具-make/Makefile
【linux】Linux项目自动化构建工具-make/Makefile
26 0
|
1月前
|
前端开发 JavaScript 测试技术
构建高效前端项目:模块化与组件化策略
【2月更文挑战第25天】 在现代网页开发中,随着用户对于网页性能和交互体验的期待不断提升,前端项目的复杂性也随之增加。为了应对这种复杂性并提高开发效率,本文将探讨模块化与组件化在前端项目中的应用策略。通过分析这两种方法的优势与适用场景,我们将揭示如何利用它们来优化项目结构,提升代码复用率,以及加快开发流程。
27 4
|
1月前
|
前端开发 JavaScript 应用服务中间件
部署前端项目到服务器过程详解
部署前端项目到服务器过程详解
89 0

热门文章

最新文章