vue的自动化测试详解(三)

简介: vue的自动化测试详解

如何测试不通过就阻止代码git提交

安装husky:cnpm i husky --save

配置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

?‍?验证:

修改测试代码文件kaikeba.spec.js

it('测试新建完毕后,create生命周期后的数据',() => {//created
        let vm = new Vue(KaiKeBaComp).$mount()
        expect(vm.msg).toBe('aftermounted')
    })

改为

it('测试新建完毕后,create生命周期后的数据',() => {//created
        let vm = new Vue(KaiKeBaComp).$mount()
        expect(vm.msg).toBe('aftermounted1')
    })

这样测试肯定是不通过的

f92b36c332e1e5ba91135313569fd0de.jpg

这时,我们来提交代码,add后再commit

44bfd2ddeb8577e7865a94df37f75475.jpg

那么我们再将测试文件改回来,让测试可以通过

1be74f471d890be0f725bbae3e987719.jpg

如图:测试通过,代码也commit提交了


E2E测试


e2e针对应用,站在测试人员的角度,没有什么mount 加载,只有按钮 页面,输入框,文本等


借⽤浏览器器的能力,站在⽤户测试⼈员的角度,输⼊框,点击按钮等,完全模拟用户,这个和具体的框架关系不大,完全模拟浏览器行为


?将views下的Home组件的

<HelloWorld msg="Welcome to Your Vue.js App"></HelloWorld>

代码恢复

?看看tests目录下e2e目录下的spec下的test.js,有这么一段

// https://docs.cypress.io/api/introduction/api.html
describe('My First Test', () => {
  it('Visits the app root url', () => {
    cy.visit('/')
    cy.contains('h1', 'Welcome to Your Vue.js App')
  })
})

这是测试代码,如果我们不做前面的恢复操作的话,测试肯定是不通过的

?执行npm run test:e2e,进行测试

项目会启动,并且会弹出一个有ok的弹窗,我们直接确定,还会有测试文件的js,选择对应的测试文件点进去

7fbb0638897feb32ab623d16e2750a6a.jpg

这样就已经测试通过了

?再来测试一个about页

// https://docs.cypress.io/api/introduction/api.html
describe('My First Test', () => {
  it('Visits the app root url', () => {
    //访问根目录
    cy.visit('/')
    cy.contains('h1', 'Welcome to Your Vue.js App')
  })
  it('测试about页', () => {
    //访问about
    cy.visit('about')
    cy.contains('h1', 'This is an about page')
  })
})

结果是这个样子

11642380a285372d6ab23bd2d8f8fffb.jpg

后测的about,就最后打开了about页,也停留在了about页面

这些都是页面某个元素的文本的测试,那么我们再来个交互试试,在我们的KaiKeBa组件上有个点击事件,我们来试试

// https://docs.cypress.io/api/introduction/api.html
describe('My First Test', () => {
  it('Visits the app root url', () => {
    //访问根目录
    cy.visit('/')
    cy.contains('h1', 'Welcome to Your Vue.js App')
  })
  it('测试about页', () => {
    //访问about
    cy.visit('about')
    cy.contains('h1', 'This is an about page')
  })
  it('KaiKeBa组件',() => {
    //访问根目录
    cy.visit('/')
    cy.contains('#msg','aftermounted')
    cy.get('button').click()//点击button元素
    cy.contains('#msg','click over')
  })
})

c6b560e5503142320a7d02f49553947b.jpg

左边那一条条可以点击,点击不同的项,也会进入不同的事件状态,例如我点了CONTAINS,文本变成了click over


题外话:测试页面前后差异,或者两个页面的差异可以用page-monitor;地址: https://github.com/fouber/page-monitor


相关文章
|
3天前
|
SQL 前端开发 数据库
基于 springboot+vue+elementui 的办公自动化系统设计
基于 springboot+vue+elementui 的办公自动化系统设计
|
6月前
|
JavaScript Java 关系型数据库
ssm+vue的企业办公自动化管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。
ssm+vue的企业办公自动化管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。
|
7月前
|
存储 JavaScript Java
【已开源】针对 jar 和 vue 一键自动化部署工具,界面好,操作简单!
easy-jenkins是一款对vue和jar的部署工具,操作简单,实行一键部署,内部结构采用流水线形式架构,每次部署,时时提供部署过程,部署记录,界面友好简洁,使用方便,符合用户常规操作
|
10月前
|
缓存 JavaScript 测试技术
Vue 中使用 Karma 做自动化测试
Vue 中使用 Karma 做自动化测试
58 0
|
JavaScript 前端开发 Cloud Native
vue脚手架多页自动化生成实践
本文旨在针对门户类应用的场景下的Vue脚手架构建方案的一些总结和分析,通过自动化的配置脚本来生成模板化的多页应用实践,以期能够给读者提供一个基于Vue全家桶的门户类工程构建方案。
67 0
|
存储 JavaScript 前端开发
针对 jar 和 vue 的一键自动化部署工具,界面友好,操作简单(已开源)2
针对 jar 和 vue 的一键自动化部署工具,界面友好,操作简单(已开源)2
|
消息中间件 JavaScript 小程序
针对 jar 和 vue 的一键自动化部署工具,界面友好,操作简单(已开源)
针对 jar 和 vue 的一键自动化部署工具,界面友好,操作简单(已开源)
|
前端开发 JavaScript 测试技术
|
前端开发 JavaScript 测试技术
一篇超详细的vue项目前端自动化测试教学!(三)
一篇超详细的vue项目前端自动化测试教学!
310 0
一篇超详细的vue项目前端自动化测试教学!(三)
|
JavaScript 前端开发 测试技术
一篇超详细的vue项目前端自动化测试教学!(二)
一篇超详细的vue项目前端自动化测试教学!
109 0
一篇超详细的vue项目前端自动化测试教学!(二)