Chai容许开发人员选择最温馨的接口进行测试语句的编写。具备链式功能的BDD风格提供了富有表现力的语言和可读风格,如expect
或者should
;而TDD断言风格则提供了更为经典的感受,如assert
。node
npm i mocha chai -S -D
function add(x, y) { return x + y; } module.exports = add;
var add=require('../src/add.js'); var expect=require('chai').expect;
describe('add_test1',function(){ it('1+1=2',function(){ expect(add(1,1)).to.be.equal(2); }); it('1+1!=3',function(){ expect(add(1,1)).to.be.not.equal(3); }) })
上面这段代码,就是测试脚本,它能够独立执行。测试脚本里面应该包括一个或多个describe块,每一个describe块应该包括一个或多个it块。express
describe块称为"测试套件",表示一组相关的测试。它是一个函数,第一个参数是测试套件的名称(“add_test1”),第二个参数是一个实际执行的函数。npm
it块称为"测试用例",表示一个单独的测试,是测试的最小单位。它也是一个函数,第一个参数是测试用例的名称(“1+1=2”),第二个参数是一个实际执行的函数json
scripts: { "test": "mocha" }
npm run mocha
运行了上述代码后,会自动运行 /test/*.test.js 文件,获得以下结果app
启动一个node服务框架
//app.js const express = require('express'); const app = express(); app.get('/', function (req, res) { res.status(200).json({ name: '1234' }); }); app.listen(8080); module.exports = app;
使用supertest模拟http请求函数
//test.js const app = require('../src/app'); const request = require('supertest'); describe('app', function () { it('/', function (done) { request(app) .get('/') .expect('Content-Type', /json/) .expect('Content-Length', "15") .expect(200) .end(done); }); });