前言
公司的项目马上要上线了,中间层在写单元测试,手头没啥别的事儿就也看看这方面的知识,学习一下哈哈。
没弄过这些,选择框架的时候挑了个mocha,打算上手后再试试Jasmine。
这边记录一下学习的过程和知识点,记性不给力,这样以便以后回顾。
安装
1 2 3 4 5 6
| npm install -g --dev-save mocha npm install -g --dev-save chai npm install --dev-save mochawesome
|
运行
运行这边我在执行的时候遇到个问题是在webstorm中直接执行会报错 describe is not defined ,在git bash或者cmd下都没问题。
执行的几种命令:
1 2 3 4 5 6 7 8 9 10 11 12
| $ mocha a.test.js $ mocha $ mocha --recursive $ mocha demo/{test1,test2}.js $ mocha demo/ *.js $ ../node_modules/.bin/mocha --reporter mochawesome
|
demo(同步)
describe
是测试套件,it
是测试用例,第一个参数都是名称,第二个参数是实际执行的函数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| function add(x,y){ return x+y } module.exports = add; 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(异步)
1 2 3 4 5 6 7 8 9 10 11 12
| var expect = require("chai").expect; var request = require("superagent"); decribe('anscy demo',function(){ it('get info',function(done){ request .get('apiurl') .end(function(err,res){ except(res).to.be.an('object'); done(); }) }) })
|
引入了superagent库来进行http操作,done() 代表该测试用例的结束
(superagent的使用详情看官方文档,http://visionmedia.github.io/superagent/)
模拟登录
在实际项目测试中,几乎所有api都是基于登录状态的,所以在执行前要先带上登录的session。
思路:在执行登录请求的时候,在header中有set-cookie的字段,得到cookie的值,在每次请求api的时候在header中带上这个cookie
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| 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(),每次都忘坑了自己一把= =