zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    ios隐藏键盘的方式简单应用
    iosiOStextView实现文字高度自适应
    ios xcode中所有自带的字体如下(最好结合NSMutableAttributedString相结合使用)
    iosNSMutableAttributedString 简单操作
    ios电话监听状态
    iOS拨打电话
    iOS TextField输入框点击键盘时随着键盘上移
    Linux学习之CentOS(七)---常用基本操命令1
    Linux学习之CentOS(六)---mount挂载设备(u盘,光盘,iso等 )
    Linux学习之CentOS(五)--CentOS下VMware-Tools安装
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/11775888.html
Copyright © 2011-2022 走看看