vue-cli5脚手架搭建项目过程详解 -vue组件单元测试

这篇具有很好参考价值的文章主要介绍了vue-cli5脚手架搭建项目过程详解 -vue组件单元测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

单元测试是对软件中的最小可测试单元进行测试。(最小可测试单元是要有结果产出的。例如某个方法,单独的某个操作)
单元测试其实是伴随着敏捷开发,它是对更快开发的一种追求。早发现错误比晚发现错误会更好,保证自己的代码符合要求

一: 搭建基于 jest 的 vue 单元测试环境 零配置开箱即用 https://jestjs.io/zh-Hans/docs/getting-started

二: 使用 vue-test-util 提高测试编码效率 https://v1.test-utils.vuejs.org/zh/guides/

(一) 手动搭建

编写 jest 配置文件

// jest.conf.js
const path = require('path');

module.exports = {
  rootDir: path.resolve(__dirname, '../../'), // 类似 webpack.context
  moduleFileExtensions: [ // 类似 webpack.resolve.extensions
    'js',
    'json',
    'vue',
  ],
  moduleNameMapper: {
    '^@/(.*)$': '<rootDir>/src/$1', // 类似 webpack.resolve.alias
  },
  transform: { // 类似 webpack.module.rules
    '^.+\\.js$': '<rootDir>/node_modules/babel-jest',
    '.*\\.(vue)$': '<rootDir>/node_modules/vue-jest',
  },
  setupFiles: ['<rootDir>/test/unit/setup'], // 类似 webpack.entry
  coverageDirectory: '<rootDir>/test/unit/coverage', // 类似 webpack.output
  collectCoverageFrom: [ // 类似 webpack 的 rule.include
    'src/**/*.{js,vue}',
    '!src/main.js',
    '!src/router/index.js',
    '!**/node_modules/**',
  ],
};

eslintrc.js

// 
module.exports = {
    env: {
        browser: true,
        es6: true,
        jest: true
      },
      parserOptions: {
        sourceType: 'module'
      },
}

(二) 通过vue-cli5脚手架创建

vue-cli5

npm install -g @vue/cli

vue create 项目名


我们选择 手动配置
vue-cli5脚手架搭建项目过程详解 -vue组件单元测试
上下键控制 空格选择 这里选择Babel转码器 Router Unit Testing 单元测试勾选上

 ? Check the features needed for your project: (Press <space> to select, <a> to toggle all, <i> to invert selection)
>( ) Babel //转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。
( ) TypeScript// TypeScript是一个JavaScript(后缀.js)的超集(后缀.ts)包含并扩展了 JavaScript 的语法,需要被编译输出为 JavaScript在浏览器运行,目前较少人再用
( ) Progressive Web App (PWA) Support// 渐进式Web应用程序
( ) Router // vue-router(vue路由)
( ) Vuex // vuex(vue的状态管理模式)
( ) CSS Pre-processors // CSS 预处理器(如:less、sass)
( ) Linter / Formatter // 代码风格检查和格式化(如:ESlint)
( ) Unit Testing // 单元测试(unit tests)
( ) E2E Testing // e2e(end to end) 测试 

vue-cli5脚手架搭建项目过程详解 -vue组件单元测试
选择版本 2.x
是否开启history模式 选择否
vue-cli5脚手架搭建项目过程详解 -vue组件单元测试
选择样式预处理
vue-cli5脚手架搭建项目过程详解 -vue组件单元测试
语法检测工具,这里我选择ESLint + Standard config

Please pick a preset: Manually select features
 Check the features needed for your project: Router, Vuex, CSS Pre-processors, Linter, Unit
 Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): Stylus
 Pick a linter / formatter config: (Use arrow keys)
 ESLint with error prevention only
 ESLint + Airbnb config
> ESLint + Standard config
 ESLint + Prettier

vue-cli5脚手架搭建项目过程详解 -vue组件单元测试
选择语法检查方式,这里我选择fix和commit时候检查检测

 Please pick a preset: Manually select features
 Check the features needed for your project: Router, Vuex, CSS Pre-processors, Linter, Unit
 Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): Stylus
 Pick a linter / formatter config: Prettier
 Pick additional lint features: (Press <space> to select, <a> to toggle all, <i> to invert selection)
 ( ) Lint on save // 保存就检测
>( ) Lint and fix on commit // fix和commit时候检查

Unit Testing 勾选后 jest 回车安装

? Please pick a preset: Manually select features
? Check the features needed for your project: Babel, Router, Vuex, CSS Pre-proce
ssors, Linter, Unit
? Choose a version of Vue.js that you want to start the project with 2.x
? Use history mode for router? (Requires proper server setup for index fallback 
in production) No
? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported 
by default): Sass/SCSS (with dart-sass)
? Pick a linter / formatter config: Standard
? Pick additional lint features: Lint on save
? Pick a unit testing solution: (Use arrow keys)
❯ Jest 
  Mocha + Chai 


接下来会问你把babel,postcss,eslint这些配置文件放哪,这里随便选,我选择放在放package.json里

Vue CLI v5.0.8
? Please pick a preset: Manually select features
? Check the features needed for your project: Babel, Router, Vuex, CSS Pre-proce
ssors, Linter, Unit
? Choose a version of Vue.js that you want to start the project with 2.x
? Use history mode for router? (Requires proper server setup for index fallback 
in production) No
? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported 
by default): Sass/SCSS (with dart-sass)
? Pick a linter / formatter config: Standard
? Pick additional lint features: Lint on save
? Pick a unit testing solution: Jest
? Where do you prefer placing config for Babel, ESLint, etc.? (Use arrow keys)
❯ In dedicated config files  // 独立文件放
  In package.json  // 放package.json里
  ? Save this as a preset for future projects? (y/N) // 是否记录一下以便下次继续使用这套配置。

等待安装完成

100 packages are looking for funding
  run `npm fund` for details

🚀  Invoking generators...
📦  Installing additional dependencies...

added 145 packages from 105 contributors in 9.016s

139 packages are looking for funding
  run `npm fund` for details

⚓  Running completion hooks...

📄  Generating README.md...

🎉  Successfully created project vue-test-util-02.
👉  Get started with the following commands:

 $ cd vue-test-util-02
 $ npm run serve

运行成功 接下来就 开始编写我们的单元测试组件
vue-cli5脚手架搭建项目过程详解 -vue组件单元测试
找到 tests/unit 目录
example.spec.js

import { shallowMount } from "@vue/test-utils"; // 可以通过 shallowMount 方法来创建包裹器
import HelloWorld from "@/components/HelloWorld.vue";

describe("HelloWorld.vue", () => {
  it("renders props.msg when passed", () => {
    const msg = "new message zyj";
    // 现在挂载组件,你便得到了这个包裹器
    const wrapper = shallowMount(HelloWorld, {
      propsData: { msg },
    });
    expect(wrapper.text()).toMatch(msg);
  });
});

describe块允许我们对相关的测试进行分组。当我们运行测试时,我们将看到控制台中输出的describe块的名称。
describe()接受一个字符串作为组件的名称,并接受一个函数作为测试的参数。其实,如果我们只有一个测试,我们不需要将它包装在一个describe块中。但是当我们有多个测试时,用这种方式组织它们是有帮助的。

断言的期望
在 Jest 中,我们使用断言来确定我们期望测试返回的内容是否与实际返回的内容相匹配。具体来说,我们使用 Jest 的 expect() 方法来实现这一点,该方法使我们能够访问许多 “匹配器” ,帮助我们将实际结果与预期结果进行匹配。

断言的语法基本上是这样的:

expect(theResult).toBe(true) // expect(wrapper.text()).toMatch(msg);

在expect()方法内部,我们将要测试的结果本身放入。然后,我们使用**匹配器(matcher)**来确定结果是否是我们预期的那样。因此,在这里,我们使用通用的 Jest 匹配器toBe() 来说明:我们期望结果为真。

在编写测试时,首先编写一个您知道肯定会通过(或肯定会失败)的测试是有帮助的。例如,如果我们说: expect(true).toBe(true) 我们知道这一定会通过。传递给expect()的结果是true,我们说我们期望这个结果是toBetrue 。所以如果我们运行这些测试,我们知道它们一定会通过,因为 true == true。

现在已经有了测试的分组,可以开始编写这些单独的测试(individual tests)

跑所有测试用例:运行npm run test:uni
npm run test:unit 测试文件名

我们这边使用 npm run test:unit example.spec.js

vue-cli5脚手架搭建项目过程详解 -vue组件单元测试文章来源地址https://www.toymoban.com/news/detail-412715.html

到了这里,关于vue-cli5脚手架搭建项目过程详解 -vue组件单元测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue-cli脚手架的下载

    vue-cli官方提供的一个脚手架,用于快速生成一个vue的项目模板 预先定义好的目录结构及其基础代码,好比创建Maven项目时可以选择创建一个骨架项目, 主要的功能: 统一的目录结构、本地调试、热部署、单元测试、集成打包上线 Node.js : 下载 | Node.js 中文网 CTRL + window 输入

    2024年02月07日
    浏览(44)
  • 20230623----重返学习-vue-cli脚手架

    Vue工程化处理工具之 : @vue/cli 脚手架的本质:基于webpack实现项目的打包部署; vue/cli 安装和使用 可选择当前配置项 文件地址在:C:Users当前电脑用户名.vuerc。 如:C:Usersfangc.vuerc 文件目录 package.json 目录: scripts:npm可执行命令 serve命令: vue-cli-service 是Vue脚手架内部封装的

    2024年02月10日
    浏览(37)
  • Webpack项目学习:Vue-cli(脚手架)-优化配置 -ui库element-plus+减小打包体积 -按需加载+自定义主题+优化

    安装 全部引入,在入口文件main.js  启动:npm start  按需引入 需要插件快速开始 | Element Plus (gitee.io)     更改默认配置 主题 | Element Plus (gitee.io)    如果有模块没有安装 ,安装一下即可 优化 关闭性能分析 文件单独打包 做缓存-

    2024年02月08日
    浏览(43)
  • mac下安装vue cli脚手架并搭建一个简易项目

    1、确定本电脑下node和npm版本是否为项目所需版本。 2、下载vue脚手架 3、创建项目 如果有node,打开终端,输入node -v和npm -v , 确保node和npm的版本,(这里可以根据自己的需求去选择,如果对最新版本的内容有要求,也可以选择最新版本)如果没有node,可以点击nodejs官网去下载

    2024年02月15日
    浏览(49)
  • Vue3 脚手架搭建项目详细过程

    如果之前安装了2.0的脚手架,要先卸载掉,输入:npm uninstall vue-cli -g 进行全局卸载 然后重新安装:npm install @vue/cli -g 由于 git bash 来执行命令的时候无法使用键盘上下键来进行选项选择,所以我们要使用  cmd / powershell,这里使用 cmd 1.vue create + 项目名称  2.模板选择,通过键

    2024年02月06日
    浏览(46)
  • vue-cli脚手架创建创建的项目打包后无法正常打开报 Failed to load resource: net::ERR_FILE_NOT_FOUND错误

    亲爱的小伙伴们,你们最近是否有遇到用使用最新的脚手架打包项目后index.html文件无法正常打开,然后控制台报错的情况呢,不要担心,这个坑今天被我踩到了并且被我解决了,下边就让我来给大家分享一下经验吧! 1.找到vue.config.js文件,进行如下配置 即添加一行配置:

    2024年02月15日
    浏览(33)
  • 【每天学习一点点 day04】工程化 npm create 脚手架 create-vue, vue-cli 执行原理① - npm cli

    希望我们每个人都能找到属于自己的花期,不急不躁,静等风来。 今天打算用 Docusaurus 开始搭建自己的知识库,之前早已有此想法,遗憾的是没有坚持下来。 这次借助这个机会,也计划将自己【每天学习一点点】系列整理在自己的知识库中,方便大家查找。 在使用脚手架命

    2024年02月22日
    浏览(39)
  • windows系统安装指定的vue/cli、node和npm;vue/cli脚手架搭建项目所涉及的vue/cli、node、npm依赖版本等问题

    记录vue/cli脚手架搭建项目所涉及的vue/cli、node、npm依赖版本等问题 先说依赖版本: vue/cli 3.12.0 node14.21.3 npm6.14.18 注意: node和npm需要版本匹配 ,也就是下载node安装包,就会自带安装npm,不可制定升级某个版本npm; 否则会导致 脚手架创建项目失败 和 vue项目启动失败 和 npm下

    2024年02月15日
    浏览(44)
  • 从0搭建Vue3组件库(十):如何搭建一个 Cli 脚手架

    本篇文章将实现一个名为 create-easyest 脚手架的开发,只需一个命令 npm init easyest 就可以将整个组件库开发框架拉到本地。 首先,我们在 packages 目录下新建 cli 目录,同执行 pnpm init 进行初始化,然后将包名改为 create-easyest 这里需要知道的是当我们执行 npm init xxx 或者 npm create xxx 的

    2024年02月08日
    浏览(68)
  • Mac OS安装Vue CLI脚手架并创建一个基础项目教程

    前后端分离 可以大大地提高开发效率,主流的解决方案为 Vue.js+SpringBoot ,这里主要介绍 Vue在Mac端的入门教程 。软硬件环境为Macbook Air M2+macOS Vantura 13.4.1。 Vue (发音为 /vjuː/,类似 view) 是一款用于 构建用户界面 的 JavaScript 框架,是官方提供的 基于 Webpack 的 Vue 工具链 。它基

    2024年02月04日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包