• jest在已有项目中的安装与使用


    简单的jest使用配置:

    npm init -y
    npm i jest@24.8.0 -D
    
    npx jest --init 生成初始化配置
    一个index文件,里面可以写入一些方法,作为测试
    
    这个jest.config.js是自动生成的!!!!!
    index.test.js就是些测试用例的文件。jest会自动的查找执行。
    
    执行这个npm run test
    这个就会执行测试用例。
    当测试用例是一个ts文件的时候:添加这个参数类型限制就会出错,暂时不知道是为啥
    可以在tsconfig.json里加上"noImplicitAny": false,先跳过这测试过程中的报错。
     
    执行代码覆盖率代码
    npx jest --coverage
    会生成报告显示到文件夹中这个测试集合。
    配置一下:在package。json中写:"coverage":"jest --coverage"
    可以执行这个:npm run coverage或者yarn coverage
    
    jest初始你初始时只支持commonjs语法,后面的es6语法需要配置。
    yarn add @babel/core@7.4.5 @babel/preset-env@7.4.5 --dev
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    添加转换器:
    .babelrc文件。(根)

    {
      "presets": [
        [
          "@babel/preset-env",{
            "targets":{
              "node":"current"
            }
          }
        ]
      ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    执行就是:

    npm run test // "test": "jest --watchAll",
    npm run  coverage//需要配置"coverage": "jest --coverage"
    yarn coverage//需要配置"coverage": "jest --coverage"
    
    • 1
    • 2
    • 3

    执行测试用例

    // const {fun} = require("../src/other/index");
    import {fun} from "../src/other/index"
    test("测试第一个函数",()=>{
        expect(fun(30)).toBe(30)
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5

    以上用例就可以实现对ts函数和js函数的基本测试用例的实现。

    组件的测试用例,必须考虑到使用vue的一些测试开发依赖。


    项目转到系统控制台执行:vue add @vue/cli-plugin-unit-jest
    配置:
    jest.config.js文件

    module.exports = {
      preset: '@vue/cli-plugin-unit-jest/presets/typescript-and-babel',
      coverageDirectory: "coverage",//代码覆盖率生成的文件夹名
      clearMocks: true,//清除数据
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    测试一个函数的报错显示
    在这里插入图片描述

    • 通过这个describe意思为套件,或者理解为创建一个测试集
    • it 断言
    • expect 期望
    • test 测试,类似it
      在这里插入图片描述
      expect(wrapper.text()).toMatch(“我爱你”)
      expect(wrapper.text()).toEqual(“我爱你”)
    describe('HelloWorld.vue', () => {
      it('renders props.msg when passed', () => {
        const wrapper = mount(HelloWorld); //Mount获取组件的包裹器,可以理解Wie就是最外层的那个div的加强版。
        console.log(wrapper.text());//输出这个组件的所有的文字内容值
        expect(wrapper.text()).toMatch("我爱你") /* 判断期望值符合这个正则选项否 */
      })
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    vue-property-decorator使用方法如下:
    https://zhuanlan.zhihu.com/p/191443950
    在这里插入图片描述
    对组件中的某个功能进行验证。

    • wrapper.text()//输出这个组件的所有的文字内容值
    • wrapper.vm.count//访问实际的 Vue 实例
    • wrapper.contains('button')//检测是存在button按钮
    • wrapper.find() 定位该按钮,此方法返回一个该按钮元素的包裹器
    • 包裹器调用 .trigger() 来模拟点击。

    参考


    测试包含有element组件的。vue文件

    import { shallowMount,mount,createLocalVue } from '@vue/test-utils'
    import ElementUI from 'element-ui';
    const localVue = createLocalVue();
    localVue.use(ElementUI);
    
    
    import other from "../../../src/components/other.vue"
    describe('第二个文件测试', () => {
      it('测试other组件', () => {
        const wrapper = mount(other)
        expect((wrapper.vm as any).data).toEqual(123)
      })
      it('测试是否有el-button按钮',()=>{
        const wrapper = shallowMount(other,{localVue});
        const el_btn = wrapper.find('#el_btn');
        expect(el_btn.exists()).toBe(true)
      })
    })
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    上面就是一些参考学习的历程,实际做法效果如下!!!!




    在已有的项目中的使用效果

    当然在使用vue add @vue/cli-plugin-unit-jest之后的效果当中, 就是如下的配置。
    一般的启动配置

    "test:unit": "vue-cli-service test:unit",
    
    • 1

    启动

    yarn run test:unit
    
    • 1

    在这里插入图片描述
    生成覆盖率报告的配置

    "coverage":"vue-cli-service test:unit --coverage"
    
    • 1

    启动

    yarn run coverage
    
    • 1

    在这里插入图片描述

    安装与配置

    暂时用到的配置就是启动配置和生成结构化报告的效果配置

    学习摸索的过程是很苦的,但是我们不要放弃,一直试试试,试到成功为止。

    终极办法,保存上一版本的代码,从头来过!!!!!!!

    就是这么……这么寂寞。
    在这里插入图片描述

  • 相关阅读:
    MySQL的下载、安装、配置
    UVA11022 String Factoring(kmp+字符串周期+区间dp)
    【java基础】File操作详解
    Redis入门完整教程:Python客户端redis-py
    900ES1-0100 honeywell 可减少视觉引导应用的整体开发时间
    【C++常见八股2】vector 的 push_back 扩容问题 | char *和 char [] 区别
    C++代码示例:排列数简单生成工具
    【前端】NodeJS:包管理工具
    Java 简单实现一个 TCP 回显服务器
    linux下profile、bashrc区别和PATH、LIBRARY_PATH、LD_LIBRARY_PATH区别
  • 原文地址:https://blog.csdn.net/m0_46672781/article/details/128146586