前端单元测试

川长思鸟来 2022-12-08 04:21 332阅读 0赞

创建项目:

  1. vue init webpack 项目名

在现有项目中添加jest+vue test utils的测试环境
1、安装依赖

  1. npm i @vue/test-utils babel-jest jest jest-serializer-vue jest-transform-stub vue-jest -D

2、修改.babelrc中添加配置

  1. "env": {
  2. "test": {
  3. "presets": ["env"]
  4. }
  5. }

3、建立测试文件目录
在这里插入图片描述
4、添加jest配置,在jest.conf.js中添上如下代码:

  1. const path = require('path');
  2. module.exports = {
  3. verbose: true,
  4. testURL: 'http://localhost/',
  5. rootDir: path.resolve(__dirname, '../../'),
  6. moduleFileExtensions: [
  7. 'js',
  8. 'json',
  9. 'vue'
  10. ],
  11. moduleNameMapper: {
  12. '^@\/(.*?\.?(js|vue)?|)$': '<rootDir>/src/$1', // @路径转换,例如:@/components/Main.vue -> rootDir/src/components/Main.vue
  13. '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '<rootDir>/test/unit/__mocks__/fileMock.js', // 模拟加载静态文件
  14. '\\.(css|less|scss|sass)$': '<rootDir>/test/unit/__mocks__/styleMock.js'  // 模拟加载样式文件
  15. },
  16. testMatch: [ //匹配测试用例的文件
  17. '<rootDir>/test/unit/specs/*.spec.js'
  18. ],
  19. transform: {
  20. '^.+\\.js$': '<rootDir>/node_modules/babel-jest',
  21. '.*\\.(vue)$': '<rootDir>/node_modules/vue-jest'
  22. },
  23. testPathIgnorePatterns: [
  24. '<rootDir>/test/e2e'
  25. ],
  26. // setupFiles: ['<rootDir>/test/unit/setup'],
  27. snapshotSerializers: ['<rootDir>/node_modules/jest-serializer-vue'],
  28. coverageDirectory: '<rootDir>/test/unit/coverage', // 覆盖率报告的目录
  29. collectCoverageFrom: [ // 测试报告想要覆盖那些文件,目录,前面加!是避开这些文件
  30. // 'src/components/**/*.(js|vue)',
  31. 'src/components/*.(vue)',
  32. '!src/main.js',
  33. '!src/router/index.js',
  34. '!**/node_modules/**'
  35. ]
  36. }

5、给测试添加上eslint配置,在.eslintrc中添加以下内容

  1. {
  2. "env": {
  3. "jest": true
  4. }
  5. }

6、在mocks开始文件下建立fileMock.js,添加以下内容,用来处理测试中遇到的静态资源

  1. module.exports = 'test-file-stub';

7、在specs文件夹下创建文件写测试用例代码,如:example.spec.js
8、在package.json中的scripts中添加测试命令:

  1. "unit": "jest --config test/s -unit/jest.conf.j-coverage",

执行npm run unit 就可以启动测试了
项目中用到了element框架,所以在写测试用例的时候,也需要给模拟的vue安装element UI

  1. import { mount, createLocalVue } from '@vue/test-utils'
  2. const localVue = createLocalVue()
  3. import ElementUI from 'element-ui'
  4. localVue.use(ElementUI)

因为jest+vue test utils这套环境中是没有axios的,所以他不认axios,但是组件代码里面确实调用了axios,那么我们就需要模拟axios

发表评论

表情:
评论列表 (有 0 条评论,332人围观)

还没有评论,来说两句吧...

相关阅读

    相关 如何进行前端单元测试

    聚沙成塔·每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感

    相关 前端单元测试工具

    单元测试Unit Test 很早就知道单元测试这样一个概念,但直到几个月前,我真正开始接触和使用它。究竟什么是单元测试?我想也许很多使用了很久的人也不一定能描述的十分清楚,

    相关 单元测试单元测试概念

    单元测试是编写测试代码,用来检测特定的、明确的、细颗粒的功能。单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的。 单元测试不仅仅用来保证当前代码的正确性,更重要