感兴趣,于是= =入门记录23333
安装
//安装mocha测试框架
npm install -g --dev-save mocha
//安装chai断言库
npm install -g --dev-save chai
//安装导出的模版
npm install --dev-save mochawesome
运行
运行这边我在执行的时候遇到个问题是在webstorm中直接执行会报错 describe is not defined ,在git bash或者cmd下都没问题。
执行的几种命令:
//在目录下执行测试文件
$ mocha a.test.js
//mocha会默认执行目录下的test子文件夹内的js
$ mocha
//上一条执行的是一层的,要遍历文件夹下所有层次的测试文件,则:
$ mocha --recursive
//执行指定文件夹demo下的test1.js test2.js
$ mocha demo/{test1,test2}.js
//执行指定文件下所有文件
$ mocha demo/ *.js
//执行导出模版(相对路径 按照自己情况来) 得到的导出文件夹在当前目录下
$ ../node_modules/.bin/mocha --reporter mochawesome
demo(同步)
describe
是测试套件,it
是测试用例,第一个参数都是名称,第二个参数是实际执行的函数。
//add.js
function add(x,y){
return x+y
}
module.exports = add;
//add.spec.js
var add = require("./add.js");
var expect = require("chai").expect;
describe('test demo',function(){
it('1+1=2',function(){
expect(add(1,1)).to.be.equal(2);
})
})
demo(异步)
var expect = require("chai").expect;
var request = require("superagent");
decribe('anscy demo',function(){
it('get info',function(done){
request
.get('xxx/api/xxx')
.end(function(err,res){
expect(res).to.be.an('object');
done();
})
})
})
引入了superagent库来进行http操作,done() 代表该测试用例的结束
(superagent的使用详情看官方文档,http://visionmedia.github.io/superagent/)
模拟登录
在实际项目测试中,几乎所有api都是基于登录状态的,所以在执行前要先带上登录的session。
思路:在执行登录请求的时候,在header中有set-cookie的字段,得到cookie的值,在每次请求api的时候在header中带上这个cookie
var expect = require('chai').expect;
var request = require('superagent');
var webservice = require('./settings.js');
describe('mock login',function () {
var cookieserver;
beforeEach(function (done) {
request
.post(webservice+'/api/investManage/login')
.send('{"email":"123","pwd":"123"}')
.set('Content-Type','application/json')
.end(function (err, res) {
if(!err){
cookieserver = res.header['set-cookie'];
done()
}
})
});
it('investInfo',function (done) {
request
.get(webservice+'/api/investManage/invest_manage/profile')
.set('Cookie',cookieserver)
.end(function (err,res) {
done()
})
});
})
不是promise写法的异步请求,一定要带上done(),每次都忘坑了自己一把= =