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文件上面我们已在项目中装置了mocha
const 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>
karma
Karma的重要目的是为开辟人员供应高效的测试环境。
环境是他们没必要设置大批设置的环境,而是开辟人员能够编写代码并从测试中取得立即反应的处所。
由于取得疾速反应是让您富有成效和创造力的缘由。
装置
发起的要领是在项目目次中当地装置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 CI
Travis CI是一种盛行的延续集成效劳,它与您的Github存储库集成,
可在推送代码时自动运转测试。经由过程向项目根目次增加一个简朴的YAML文件来完成集成 ;
Travis和Github担任其他的事情。每当测试时,Travis效果将出如今您的Github拉取要求中,
您的历史记录将在其控制面板中供应。本文假定您已具有Travis帐户。
设置
首先是去 travis官网去注册一下 用GitHub账号
然后回读取你的GitHub项目开源的,内里有个设置 翻开就好了.Travis会在代码push时收到GitHub关照,然后自动猎取最新代码,举行CI。
然则我们照样须要编写一个.travis.yml文件来通知Travis一些项目信息
language: node_js
node_js:
- 0.4
- 0.6
前端的设置
package.json 内里要设置个敕令
"scripts": {
"test": "mocha"
},
Mocha 已装置过全局了
然后push的时刻就自动触发 npm test