# easy-test-lib **Repository Path**: tackchen/easy-test-lib ## Basic Information - **Project Name**: easy-test-lib - **Description**: A simple and easy-to-use testing framework - **Primary Language**: TypeScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-01-26 - **Last Updated**: 2022-01-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 🚀 一个简单小巧的js测试库

star Author

Version Downloads Size License TopLang issue Dependent

**[English](https://github.com/theajack/easy-test-lib/blob/master/README.md) | [在线使用](https://theajack.gitee.io/jsbox?github=theajack.easy-test-lib) | [反馈错误/缺漏](https://github.com/theajack/easy-test-lib/issues/new) | [Gitee](https://gitee.com/theajack/easy-test-lib)** ### 1. 特性 1. typescript 编写 2. 体积小巧,简单易用 3. 多端支持 4. 支持异步 5. 可自定义插件 6. 配置文件 + 命令行运行 7. 全局安装可用 ### 2. 安装 #### 2.1 api调用 ``` npm i easy-test-lib -D ``` ```js const {startTest} = require('easy-test-lib'); startTest(config); ``` #### 2.2 配置文件调用 package.json 增加 ``` ... "scripts": { "test": "etest " }, ... ``` 配置文件默认是根目录的 `easy.test.js` 文件,可以自由配置 根目录执行 ``` npm run test ``` #### 2.3 全局安装使用 ``` npm i easy-test-lib -g ``` 配置文件与2.2中规则一致 在项目目录中运行以下命令行即可 ``` etest ``` #### 2.4 CDN ```html ``` ### 3 配置 ```js const {startTest} = require('easy-test-lib'); function add (x, y) { return x + y; } startTest({ args: { // 可选参数 // 用于传入一些公用的api,会被传入测试用例中 }, cases: [ // 测试用例配置,建议拆分文件 { name: '测试add函数', // 可选 disabled: false, // 可选 是否禁用当前用例 args: { // 可选 // 当前测试用例的api }, test (mergedArgs) { // mergedArg 为公共arg和用例arg的合并,除此之外mergedArg 中有 $global 和$local两个属性 // this指代当前测试用例 return add(1, 1); }, expect: 2, // plugin: ITestPlugin, // 当前测试用例使用的插件 可选 } ], onTestComplete (result) { // 测试全部完成回调 可选 // result 数据结构如下 /* passed: boolean; results: [ { passed: boolean; result: any; expect?: any; name?: string; index: number; time: number; } ]; time: number; */ }, onTestSingle (result) { // 单个测试用例完成回调 可选 // result 数据结构如下 /* passed: boolean; result: any; expect?: any; name?: string; index: number; time: number; */ }, // plugin: ITestPlugin, // 全局插件 可选 }); ``` ### 4 插件 #### 4.1 内置插件 easy-test-lib 内置了 默认插件(defaultPlugin) 1.0.1 及之后的版本 将异步插件功能合并进了默认插件里 以下是一个使用异步的测试用例 ```js function timeout (time) { return new Promise(resolve => { setTimeout(() => { resolve(true); }, time); }); } const asyncCase = { args: {aa: 22}, name: '测试async', async test (args: any) { // 或者返回一个 Promise 对象 await timeout(2000); console.log(args, this.args); return [ 11 ]; }, expect: [ 11 ] }; module.exports = asyncCase; ``` 运行测试用例 ```js const {startTest} = require('easy-test-lib'); const testAsync = require('./test-async'); startTest({ cases: [ testAsync ], onTestComplete (result) { console.log(`总耗时(${result.time})ms; 结果:${result.passed ? '通过' : '失败'}`); console.log(result); }, onTestSingle (result) { console.log(`${result.index}: 耗时(${result.time})ms; 结果:${result.passed ? '通过' : '失败'}`); } }); ``` #### 4.2 自定义插件 easy-test-lib 支持自定义插件,交给开发者定制测试计算过程,一个简单的自定义插件模板如下 ```js const plugin: ITestPlugin = (item, mergedArgs) => { // do something ... return { result: {}, expect: {}, passed: true, }; }; export default plugin; ``` ### 5 API #### 5.1 startTest 参见 上文 3 #### 5.2 isValueEqual 判断两个对象是否相等,支持引用类型 引用类型会遍历其中的所有属性值是否相等 ```js const {isValueEqual} = require('easy-test-lib'); console.log(isValueEqual(1, 1)); ``` #### 5.3 defaultPlugin 默认的插件 #### 5.4 ts 接口 1. ITestConfigItem 2. ITestPlugin 3. IStartTest 4. IIsValueEqual 5. IMergedArgs