随着js 越来越强大,日常使用中关于js 的问题也就越突出了,我们需要关注的点也就不能只像以前那样
只编写简单的功能实现,我们同时也需要关注js 的健壮性,测试就是其中一个比较重要的环节,以下
是ava 测试框架的一个简单使用,关于ava 的介绍可以查看官方文档

demo 同时集成了简单的github repo 测试

环境准备

为了测试,代码使用了typescript,通过tsc 实时编译

  • 项目结构
 
├── libs
│ ├── app.d.ts
│ └── app.js
├── package.json
├── src
│ └── app.ts
├── tests
│ └── app.js
├── tsconfig.json
 
 
  • 代码说明
    src 为typescript 的简单代码,libs typescript 实时编译生成的js 文件,tests 目录为集成的测试,tsconfig.json是关于typescript 的配置
    pacakge.json 主要定义依赖以及npm scripts,还有就是github repo push 的配置
 
{
  "name": "@rongfengliang/ava-test-learning",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "devDependencies": {
    "ava": "^2.4.0",
    "typescript": "^3.6.4",
    "zen-observable": "^0.8.14"
  },
  "scripts": {
    "test:live": "ava -v -w",
    "test": "ava",
    "build:live": "tsc --watch"
  },
  "publishConfig": {
    "registry": "https://npm.pkg.github.com/"
  }
}
 
 

src/app.ts 待测试的代码

// define user entity
let user = {
   /** user name */
   name:"dalong",
   /** user age */
   age:33
}
// for export default
export default {
   user
}
export {
   user
}

tests/app.js

import test from 'ava';
import Observable from "zen-observable"
import {user} from "../libs/app"
test('foo', t => {
  t.plan(3)
  let name = "dalong"
  t.log(`input name ${name}`)
  return Observable.of(1, 2, 3, 4, 5, 6)
    .filter(n => {
      return n % 2 === 0;
    })
    .map(() => t.pass());
});
test.todo('will think about writing this later');
test('bar', async t => {
  const bar = Promise.resolve('bar');
  t.is(await bar, 'bar');
});
test('username', t => {
  t.log("test for username is equal",test.meta.file)
  t.is(user.name,"dalong")
});
 
 

运行&&测试

  • 运行实时ts 编译
yarn build:live
  • 运行实时测试
yarn test:live
  • 效果

github repo 发布

  • login
npm login --registry=https://npm.pkg.github.com

注意输入的信息,用户密码使用生成的个人token,同时注意token 需要包含操作package 的权限,同时注意项目中pacakge.json
中的名字,当前github 支持的repo 是scope 类型的

  • 发布
npm publish
  • 效果

说明

以上是一个简单的测试,实际上ava 功能很强大,同时官方提供的文档也比较详细,我们可以结合nyc 提供覆盖率的处理

参考资料

https://github.com/rongfengliang/ava-test-learning
https://github.com/avajs/ava

ava js 测试框架基本试用的更多相关文章

  1. jest js 测试框架-简单方便人性化

    1. 安装 yarn global add jest-cli or npm install -g jest-cli 备注:可以安装为依赖不用全局安装 2. 项目代码 a. 项目初始化 yarn ini ...

  2. angular.js测试框架protracotr安装所需的node版本

    protractor内代码的语法是基于ES6的,比如:里面用到了展开运算符“...”,node.js 6.0以下是不支持该语法特性. 所以,安装protractor是不会报错,但运行webdriver ...

  3. angular.js测试框架protracotr自带的webdriver-manager启动问题“Invalid or corrupt jarfile”

    按照官网安装完protractor. 升级webdriver-manager,获取selenium-server-standalone库文件以及各种浏览器驱动文件. webdriver-manager ...

  4. 前端测试框架对比(js单元测试框架对比)

    前端测试框架对比(js单元测试框架对比) 本文主要目的在于横评业界主流的几款前端框架,顺带说下相关的一些内容. 测试分类 通常应用会有 单元测试(Unit tests) 和 功能测试(Function ...

  5. js单元测试框架

    js单元测试框架 前端测试框架对比(js单元测试框架对比) 本文主要目的在于横评业界主流的几款前端框架,顺带说下相关的一些内容. 测试分类 通常应用会有 单元测试(Unit tests) 和 功能测试 ...

  6. 最受欢迎的5款Node.js端到端测试框架

    测试,尤其是自动化测试在现代 WEB 工程中有着非常重要的角色,与交付过程集成良好的自动化测试流程可以在新版发布时帮你快速回归产品功能,也可以充当产品文档.测试因粒度不同又可以分为单元测试.接口测试. ...

  7. 测试驱动开发(TDD)及测试框架Mocha.js入门学习

    组里马上要转变开发模式,由传统的开发模式(Developer开发,QA测试),转变为尝试TDD(Test-driven development,测试驱动开发)的开发模型.由此将不存在QA的角色,或者仅 ...

  8. python测试框架&&数据生成&&工具最全资源汇总

    xUnit frameworks 单元测试框架frameworks 框架unittest - python自带的单元测试库,开箱即用unittest2 - 加强版的单元测试框架,适用于Python 2 ...

  9. H5案例分享:JS手势框架 —— Hammer.js

    JS手势框架 -- Hammer.js 一.hammer.js简介 hammerJS是一个开源的,轻量级的触屏设备javascript手势库,它可以在不需要依赖其他东西的情况下识别触摸,鼠标事件.允许 ...

随机推荐

  1. k8s-Label(标签)

    k8s-Label(标签) 一.Label是什么? Label是Kubernetes系统中的一个核心概念.Label以key/value键值对的形式附加到各种对象上,如Pod.Service.RC.N ...

  2. 豆瓣Top250

    """ 爬取豆瓣电影TOP250 - 完整示例代码 """ import codecs import requests from bs4 i ...

  3. 【Kafka】Exactly Once语义与事务

    Kafka在0.11.0.0之前的版本中只支持At Least Once和At Most Once语义,尚不支持Exactly Once语义. 但是在很多要求严格的场景下,如使用Kafka处理交易数据 ...

  4. 【转载】 C#中手动创建一个DataTable对象并写入数据

    在C#操作集合数据的过程中,有时候需要手动创建一个DataTable对象,并手动设置DataTable对象的Columns列名等信息,最后再往手动创建的DataTable对象中写入相应的数据信息,此时 ...

  5. elementUI的导航栏在刷新页面的时候选中状态消失的解决

    首先elementUI的导航栏中的选中项的高亮显示时的字体颜色可以在属性中设置,但是高亮时的背景颜色不能设置,所以要自己修改高亮的背景颜色 .el-menu-item.is-active { back ...

  6. element-ui Upload 上传获取当前选择的视频时长

    <el-upload class="upload-demo" ref="vidos" :action="URL+'/api/post/file' ...

  7. Java 数组(一)定义与访问

    一.数组 1.容器概述    容器:是将多个数据存储到一起,每个数据称为该容器的元素. 2.数组概述  数组:数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致. 数组特点: (1)数组是一 ...

  8. Servlet入门和HTTP。

    Servlet: 1.概念:Servlet:server applet  ,运行在服务器端的小程序.   浏览器在访问服务器的动态资源时,访问的是具有逻辑性的Java代码(Java类),而这里的Jav ...

  9. 【前端_js】Bootstrap之表单验证

    Bootstrap表单验证插件bootstrapValidator使用方法整理 BootstrapValidator 表单验证超详细教程    

  10. PAT 乙级 1020.月饼 C++/Java

    题目来源 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意:销售时允许取出一部 ...