随着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. .net(2)

    11.interface是否可继承interface?abstract class 是否可实现interface 回答1:接口可以继承接口,而且可以继承多个接口,用“,”进行分割,接口不允许直接或间接 ...

  2. LOJ2336 JOI2017 绳 贪心、构造

    传送门 首先显然的是可以一开始先染好再做.每个点只会被染一次.最后只剩下两种颜色. 接下来是结论时间:序列可以反转的充要条件是除了首尾的极大颜色连通块以外其他极大颜色连通块长度为偶数. 证明充分性:考 ...

  3. drools -规则语法

    文章结构 1. 基础api 2. FACT对象 3. 规则 4. 函数 1. 基础api 在 Drools 当中,规则的编译与运行要通过Drools 提供的各种API 来实现,这些API 总体来讲可以 ...

  4. JqGrid参考实例

    <div class="gridtable mt5"> <table id="tbList"></table> <di ...

  5. String.Operation

    // 字符串切割 StringField.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

  6. vmare-Tools重启后也不生效的问题

    这也是一个关于 Tools的问题,如题,既不能互相拷贝文件,也不能调节分辨率,好像是因为 Tools 的版本问题 需要进行的操作: 1:sudo apt-get install open-vm-too ...

  7. 教你玩转Git-合并冲突

    Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件.Git 与 ...

  8. 嵌入式Web服务器boa在ARM平台的移植步骤

    1.下载http://www.boa.org/ 2.解压tar xzf boa-0.94.13.tar.gz 3.编译cd boa-0.94.13/src./configure 生成了makefile ...

  9. Csharp 基础笔记知识点整理

    /* * @version: V.1.0.0.1 * @Author: fenggang * @Date: 2019-06-16 21:26:59 * @LastEditors: fenggang * ...

  10. 几种线程相关的map介绍

    Java中平时用的最多的Map集合就是HashMap了,它是线程不安全的. 看下面两个场景: 1.当用在方法内的局部变量时,局部变量属于当前线程级别的变量,其他线程访问不了,所以这时也不存在线程安全不 ...