【node】----mocha单元测试框架-----【格尔尼卡ぃ】
一、mocha简介
单元测试是用来对一个模块、一个函数、或者一个类来进行正确性的检测工作
特点:
既可以测试简单的JavaScript函数,又可以测试异步代码,
可以自动运行所有测试,也可以只运行特定的测试
二、编写模块代码
1 module.exports = { 2 add:function(a,b){ 3 return a+b; 4 }, 5 6 reduce:function(a,b){ 7 return a-b; 8 }, 9 10 ride:function(a,b){ 11 return a*b 12 } 13 }
三、编写测试脚本
1 1、全局安装mocha模块 cnpm install mocha -g 2 3 2、安装chai模块 cnpm install chai --save-dev 4 5 3、describe块称为"测试套件"(test suite),表示一组相关的测试。它是一个函数,第一个参数是测试套件的名称("加法函数的测试"),第二个参数是一个实际执行的函数。 6 it块称为"测试用例"(test case),表示一个单独的测试,是测试的最小单位。它也是一个函数,第一个参数是测试用例的名称("1 加 1 应该等于 2"),第二个参数是一个实际执行的函数。 7 8 4、在接下来的测试中我们用expect进行测试 9 10 const expect = require("chai").expect; 11 12 describe("对计算器模块的测试",function(){ 13 //对模块的测试放在it里面 14 it("测试加法",function(){ 15 16 //相等不相等的判断 17 //测试:断定add方法1+2的值是3 18 expect(calculator.add(1,2)).to.equal(3) 19 20 //测试:断定add方法1+2的值不等于3 21 expect(calculator.add(1,2)).to.not.equal(10) 22 23 24 //类型的判断 25 //测试:断定add方法的返回值得类型是number 26 expect(calculator.add(1,2)).to.be.a("number"); 27 28 //测试:断定这个值得类型是一个对象 29 expect({name:"zhao"}).to.be.an("Object"); 30 31 //测试:断定这个值得类型是一个数组 32 expect([1,2,3]).to.be.an("array"); 33 34 //长度的判断 35 //测试:断定str方法的返回值的长度是3 36 expect(calculator.str()).to.have.lengthOf(3); 37 38 39 //是否存在的判断 40 //测试:断定obj方法的返回值得属性中有name这个属性 41 expect(calculator.obj()).to.have.property("name"); 42 43 //测试:断定这个值里面有3这个值 44 expect([1,2,3,4]).to.include(3); 45 46 //测试:断定这个值的内容值有o这个字符 47 expect("zhao").to.contain("o"); 48 49 50 //布尔值的判断 51 //测试:断定这个值得布尔值的类型是true 52 expect("abc").to.be.ok; 53 54 //测试:断定这个值得布尔值的类型不是true 55 expect("").to.be.not.ok; 56 }) 57 }) 58 59 mocha还可以监听脚本的变化 mocha --watch 60 61 62 基本上,expect断言的写法都是一样的。头部是expect方法,尾部是断言方法,比如equal、a/an、ok、match等。两者之间使用to或to.be连接。 63 详情请参考:http://www.ruanyifeng.com/blog/2015/12/a-mocha-tutorial-of-examples.html