VUE+jtest的组件单元测试

会议讨论结构

  • 代码测试用于基础组件库,类似于element
  • 业务层的测试可以对部分需要长期维护的代码进行测试

VUE的脚手架本身自带单元测试功能,可以选择karma和jtest两种,本文主要是测试了两种方式的不同。在讲到前端测试的时候我们需要区分以下两种测试概念:

  • e2e测试:测试一个应用从头到尾的流程是否和设计时候所想的一样。简而言之,它从一个用户的角度出发,认为整个系统都是一个黑箱,只有UI会暴露给用户。这种测试依赖于我们可以通过代理或者直接控制浏览器本身,来发起用户操作,来检验当前页面的链接,某个元素是否可用。 这个我选择了phantomJS和nightwatchJS来介绍,phantomJS本身是exe文件,不过通过nodejs包装提供了npm包,有npm插件,nightwatchJS是一个通过nodejs链接Selenium和chromedriver
  • unit测试:单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。

接下来通过几个demo看看具体的实现是怎么样子的。

phantomJS

这个是提供了针对各个浏览器的API

下载软件,安装环境变量

  • 截屏 获取dom元素 检测dom元素的属性
  • github.com/ariya/phant…
  • phantomjs rasterize.js https://www.xinhehui.com "a.png
  • 网络测速,网络访问,注入JS运行
  • phantomjs loadspeed.js https://www.xinhehui.com
var page = require('webpage').create();
page.open('http://example.com', function(status) {
  console.log("Status: " + status);
  if(status === "success") {
    page.render('example.png');
  }
  phantom.exit();
});
复制代码

Nightwatch

Nightwatch是nodejs驱动的e2e测试框架,自带断言库,可以编写测试脚本

Node.js powered End-to-End testing framework

e2e测试框架,based on Node.js,Web应用E2E(End To End)测试是模拟用户进行页面操作,通过来判断页面状态的变化,从而检查功能是否运行正常的测试方法

  • 并行处理
  • 使用W3C WebDriver API ,之前基于Selenium API
  • 基于Chai断言库
  • 部署有点繁琐,需要下载selenium-server-standalone-3.8.1.jar,因为它基于selenium的,chromedriver.exe,这个是根据自己需要测试用的浏览器来选择,然后下载对应的浏览器模块
  • 弄好了之后,就是挨个启动,弄个配置
require('babel-register')
var config = require('../../config')

// http://nightwatchjs.org/gettingstarted#settings-file
module.exports = {
  src_folders: ['test/e2e/specs'],
  output_folder: 'test/e2e/reports',
  custom_assertions_path: ['test/e2e/custom-assertions'],

  selenium: {
    start_process: true,
    server_path: require('selenium-server').path,
    host: '127.0.0.1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值