Node assert (断言)断言是什么assert 模块提供了一组简单的断言测试,可用于测试不变量。存在严格模式(strict)和遗留模式(legacy),但建议仅使用严格模式。简单说就是用来做测试的严格模式的引入: const assert = require(‘assert’).strict;遗留模式的引入: const assert = require(‘assert’)API 学习1. assert.equal(actual, expected[, message])message 是可选属性,报错抛出message严格模式:assert.strictEqual注意: 只能判断基本数据类型,引用类型不可以判断 assert.equa(1,1) // true 通过 assert.equa({a:1},{a:1}) // false 未通过 equal 表示 == strictEqual 表示 === // 所以要注意隐式转换的问题比如说 assert.equa(“1”,1) // true 通过 assert.strictEqual(‘1’,1) // false 报错2. assert.deepEqual(actual, expected[, message])严格模式: assert.deepStrictEqual(actual, expected[, message])解释: 判断期望值和实际值是否相等,可判断可枚举属性具有equal函数的相同功能,也能判断对象,数组 assert.deepEqual([“1”,2],[1,2]) // 通过 // 严格模式下 assert.deepStrictEqual([“1”,2],[1,2]) //未通过 // 循环在比较数组中的每一个元素 主要就是是使用这2个严格模式Mocha 测试框架Mocha 是一个在Node.js和浏览器上运行的功能丰富的JavaScript测试框架,使异步测试变得简单而有趣。Mocha 测试以串行方式运行,允许灵活准确的报告,同时将未捕获的异常映射到正确的测试用例首先是安装建议使用项目里面安装mocha,不然全部安装使用会影响别的项目.记得这是开发依赖npm install –save-dev mocha然后创建一个test 文件夹,所有的测试文件放在test下编写测试接下来我们可以编写测试案例了,新建一个add.js 代码如下module.exports = function (a,b) { return a+b;};下面我们就对这个函数进行测试在test文件夹下面新建一个test.js文件上面我们已经在项目中安装了mochaconst assert = require(‘assert’);const add = require(’../add.js’);describe(’#add’, () =>{ it(‘sum(3,5) should return 8’, () => { assert.strictEqual(sum(3,5), 8); })})这时候我们来看一下 deescribe 这个函数 可以任意嵌套多作为一个组,直白点就是给你当注释用的it 函数是一个测试用例 你可以下多个 放在it里面现在我们要配置测试,我们在package.json里面配置一个test命名 对应 mocha 就可以了.运行 npm test 那么一个测试就完成了还有一些生命周期的函数,可以把下面这段代码添加进describe(’#add’, () =>{ before(function () { console.log(‘before:’); }); after(function () { console.log(‘after.’); }); beforeEach(function () { console.log(’ beforeEach:’); }); afterEach(function () { console.log(’ afterEach.’); }); it(‘sum(3,5) should return 8’, () => { assert.strictEqual(sum(3,5), 8); })}) 可以看一下这个生命周期,了解一下.异步测试用mocha测试一个函数是非常简单的,但是,在JavaScript的世界中,更多的时候,我们编写的是异步代码,所以,我们需要用mocha测试异步函数。这里涉及一个新的知识点 async 函数,可能有的小伙伴不太会,这里啰嗦一下,因为我也不太懂async 函数 我理解的 async 以前我们使用 callback。 后来我们使用 Promise。 现在我们使用 Async/Await。 Async - 定义异步函数(async function someName(){…}) - 自动把函数转换为 Promise - 当调用异步函数时,函数返回值会被 resolve 处理 - 异步函数内部可以使用 await Await - 暂停异步函数的执行 (var result = await someAsyncCall();) - 当使用在 Promise 前面时,await 等待 Promise 完成,并返回 Promise 的结果 - await 只能和 Promise 一起使用,不能和 callback 一起使用 - await 只能用在 async 函数中 修改函数如下 module.exports = async ()=>{ let num = await setTimeout(() =>{ return 1 console.log(1) },1000) return num}然后编写一个测试函数const assert = require(‘assert’)const sum = require(’../add’)describe("#add", () =>{ it(“测试异步”, async () =>{ let result = await sum() console.log(result) console.log(1) })})运行 npm test 查看结果.Http测试<font color=red>暂时还没写</font>karmaKarma的主要目标是为开发人员提供高效的测试环境。环境是他们不必设置大量配置的环境,而是开发人员可以编写代码并从测试中获得即时反馈的地方。因为获得快速反馈是让您富有成效和创造力的原因。安装建议的方法是在项目目录中本地安装Karma(以及项目需要的所有插件)。# Install Karma:$ npm install karma –save-dev# Install plugins that your project needs:$ npm install karma-jasmine karma-chrome-launcher jasmine-core –save-dev这将安装karma,karma-jasmine,karma-chrome-launcher和jasmine-c到node_modules当前工作目录,也可以作为保存这devDependencies的package.json,所以,任何其他开发项目工作会只有这样做npm install才能得到所有这些依赖安装。# Run Karma:$ ./node_modules/karma/bin/karma start官网建议安装一个全局的 方便命令npm install -g karma-cli如何集成到项目里面Travis CITravis CI是一种流行的持续集成服务,它与您的Github存储库集成,可在推送代码时自动运行测试。通过向项目根目录添加一个简单的YAML文件来完成集成 ;Travis和Github负责其余的工作。每当测试时,Travis结果将出现在您的Github拉取请求中,您的历史记录将在其控制面板中提供。本文假设您已经拥有Travis帐户。配置首先是去 travis官网去注册一下 用GitHub账号然后回读取你的GitHub项目开源的,里面有个设置 打开就好了.Travis会在代码push时收到GitHub通知,然后自动获取最新代码,进行CI。但是我们还是需要编写一个.travis.yml文件来告诉Travis一些项目信息language: node_jsnode_js: - 0.4 - 0.6前端的配置package.json 里面要配置个命令"scripts": { “test”: “mocha” }, Mocha 已经安装过全局了然后push的时候就自动触发 npm test