模塊
1.mocha(單元測試框架)
2.supertest(http測試)
3.assert(node核心assert模塊)
4.express(nodejsweb框架)
代碼區
1.普通方法測試
const assert=require('assert')
const sum=function(...rest){
let sum=0;
for(let n of rest){
sum+=n
}
return sum
}
describe("#test sum function",function(){
it('sum() should return 0',function(){
assert.strictEqual(sum(),0);
})//普通方法測試
})
2.異步方法測試
describe("#test fs",function(){
it('test async function',function(done){
fs.readFile('filepath',function(err,data){
if(err){
done(err)
}else{
let fun=new Function('return ' + data);
let r=fun();
assert.strictEqual(r,15);
done()
}
})
})//異步方法測試
})
3.http測試
app.js
const express=require('express')
const app=new express();
var bodyParser=require('body-parser');
app.use(bodyParser.json({limit: '1mb'})); //body-parser 解析json格式數據
app.use(bodyParser.urlencoded({ //此項必須在 bodyParser.json 下面,爲參數編碼
extended: true
}));
app.get("/",function(req,res){
console.log(req.query)
res.send({msg:"哈哈"});
});
app.post("/send",function(req,res){
let body=req.body;
console.log(body);
res.send({encode:body.name})
})
module.exports=app;
app-test.js
const request=require('supertest')
const app=require('./app')
describe("#test express app",function(){//http測試
let server;
before(function() {//執行測試用例前開啓服務器
// runs before all tests in this block
server=app.listen(9999);
});
after(function() {//執行完後關閉服務器監聽
// runs after all tests in this block
server.close();
});
beforeEach(function() {
// runs before each test in this block
});
afterEach(function() {
// runs after each test in this block
});
describe('#test server',function(){
it('#test get /',function(done){
request(server)
.get('/')
.query({n:1})
.expect(200,function(err,res){
if(err){
console.log(err)
done(err)
}else{
console.log(res.body)
done()
}
})
});
it('#test post /send',function(done){
request(server)
.post("/send")
.send({name:"wushichao"})
.expect(200,function(err,res){
if(err){
console.log(err)
done(err)
}else{
console.log(res.body)
done()
}
})
})
})
})
注:mocha 可以自動尋找項目下的test文件夾,並執行此文件夾下的js文件。