Vue前端自动化测试-Vue Test Utils

VueTestUtils是Vue官方的单元测试库,提供了与测试运行器无关的工具,简化了Vue组件的测试。文章介绍了如何在未预配置单元测试的新建Vue项目中,安装和配置VueTestUtils以及Jest,包括安装插件、创建jest.config.js文件、更新package.json脚本,以及编写测试用例。示例展示了使用shallowMount创建组件Wrapper并进行断言测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Vue Test Utils简介

vue-test-utils是vue官方的单元测试框架,提供了一系列非常方便的工具,使我们更轻松地为vue构建的应用来编写单元测试。主流的JavaScript测试运行器有很多,但vue-test-utils都能支持。它是与测试运行器无关的。

环境配置

通过脚手架 vue-cli 来新建项目的时候,如果选择了 Unit Testing 单元测试且选择的是 Jest 作为测试运行器,那么在项目创建好后,就会自动配置好单元测试需要的环境。本文主要讲的就是新建项目之初没有选择单元测试功能,需要后面去添加的配置。

npm i @vue/cli-plugin-unit-jest -D
npm i @vue/test-utils -D
v3:npm i @vue/vue3-jest@^27.0.0-alpha.1 -D
v2:npm i @vue/vue2-jest@^27.0.0-alpha.2 -D

配置Jest

项目根目录创建jest.config.js文件

module.exports = {
  //有啥需要就在这里配置...
  preset: "@vue/cli-plugin-unit-jest",
};

配置package.json

  "scripts": {
    "test": "vue-cli-service test:unit",
  },

编写测试文件

项目根目录创建tests/unit/example.spec.js文件

import { shallowMount } from "@vue/test-utils";
import HelloWorld from "@/components/HelloWorld.vue";

describe("HelloWorld.vue", () => {
  it("renders props.msg when passed", () => {
    const msg = "new message";
    const wrapper = shallowMount(HelloWorld, {
      props: { msg },
    });
    expect(wrapper.text()).toMatch(msg);
  });
});

HelloWorld.vue文件 

<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  props: {
    msg: String
  }
}
</script>

<style scoped>

</style>

  • shallowMount 将会创建一个包含被挂载和渲染的 Vue 组件的 Wrapper,只存根当前组件,不包含子组件。
  • describe(name, fn) 这边是定义一个测试套件,HelloWorld.vue 是测试套件的名字,fn 是具体的可执行的函数
  • it(name, fn) 是一个测试用例,输入框初始值为空字符串 是测试用例的名字,fn 是具体的可执行函数;一个测试套件里可以保护多个测试用例。
  • expect 是 Jest 内置的断言风格,业界还存在别的断言风格比如 Should、Assert 等。
  • toBe 是 Jest 提供的断言方法,比如expect(1+1).toBe(2),更多的可以到Jest Expect 查看具体用法。

执行测试命令

npm run test

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值