随着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

最新文章

  1. JMeter学习-027-JMeter参数文件(脚本分发)路径问题:jmeter.threads.JMeterThread: Test failed! java.lang.IllegalArgumentException: File distributed.csv must exist and be readable解决方法
  2. python启动服务器
  3. 由浅到深讲解C#-LINQ
  4. Metasploit中使用Nessus插件命令
  5. Error: Exception in thread “main” java.lang.NoClassDefFoundError错误
  6. C#截取字符串的方法小结
  7. Coreseek:常见的问题2
  8. linux搭建phantomjs+webdriver+testng+ant自动化工程
  9. 4.app是怎么炼成的
  10. vuex最简单、最直白、最全的入门文档
  11. Graphviz的安装 - windows环境下
  12. python自然语言处理函数库nltk从入门到精通
  13. axure rp安装
  14. ABAP-折叠窗口
  15. C# 在WPF中使用Exceptionless异常日志框架
  16. 读取配置文件的URL,使用httpClient发送Post和Get请求,实现查询快递物流和智能机器人对话
  17. Qt Creator设置多核编译(-j8参数)
  18. Ubuntu14.04 libboost_program_options.so.1.54.0: cannot open shared object file: No such file or directory
  19. MongoDB 安装详细教程 + 常用命令 + 与 Python 的交互
  20. Linux的shell script

热门文章

  1. 【Pandas教程】像写SQL一样用Pandas~
  2. Mysql系列(一)—— 基于5.7.22 解压版下载、安装、配置和卸载
  3. 在vps上搭建hexo博客
  4. 运行带有Activiti modeler时,出现这样的报错: java.rmi.AccessException: Cannot modify this registry
  5. 【转】socket通信-C#实现udp通讯
  6. Python进阶----多表查询(内连,左连,右连), 子查询(in,带比较运算符)
  7. CentsOS原生RabbitMQ安装过程
  8. English--状语从句
  9. 时间格式在ios和安卓兼容性的问题:
  10. 如何显示IntelliJ IDEA工具的Run Dashboard功能(转)