• ava js 测试框架基本试用


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

  • 相关阅读:
    【JZOJ4928】【NOIP2017提高组模拟12.18】A
    【JZOJ4922】【NOIP2017提高组模拟12.17】环
    【JZOJ4923】【NOIP2017提高组模拟12.17】巧克力狂欢
    【JZOJ4924】【NOIP2017提高组模拟12.17】向再见说再见
    【JZOJ4919】【NOIP2017提高组模拟12.10】神炎皇
    【JZOJ4920】【NOIP2017提高组模拟12.10】降雷皇
    【JZOJ4921】【NOIP2017提高组模拟12.10】幻魔皇
    【罗宾欺诈者】回环符文——回文树(回文自动机)
    【怪物】KMP畸形变种——扩展KMP
    【51NOD1304】字符串的相似度
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/11775888.html
Copyright © 2020-2023  润新知