学习单元测试

20190330 学习单元测试

什么是单元测试

单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。

例如:
对cal()函数,写以下测试用例:

  1. 输入1、2,期待返回与输入相同的值
  2. 输入-1、-2,期待返回与输入相反的值

把上面的测试用例放到一个测试模块里,就是一个完整的单元测试如果单元测试通过,说明我们测试的这个函数能够正常工作。如果单元测试不通过,要么函数有bug,要么测试条件输入不正确

mocha

mocha是JavaScript的一种单元测试框架,既可以在浏览器环境下运行,也可以在Node.js环境下运行

特点
  • 既可以测试简单的JavaScript函数,又可以测试异步代码,因为异步是JavaScript的特性之一;
  • 可以自动运行所有测试,也可以只运行特定的测试;
  • 可以支持before、after、beforeEach和afterEach来编写初始化代码
安装

全局安装

npm install -global mocha

局部安装

npm install --save-dev mocha
脚本写法

Getting Started

npm install mocha
mkdir test
EDITOR test/test.js # or open with your favorite editor

package.json配置

"scripts": {
    "test": "mocha"
  }

add.js

function add(x, y) {
  return x + y;
}

module.exports = add;

通常,测试脚本与所要测试的源码脚本同名,但是后缀名为.test.js(表示测试)

// add.test.js
var add = require('./add.js');
var expect = require('chai').expect;

describe('加法函数的测试', function() {
  it('1 加 1 应该等于 2', function() {
    expect(add(1, 1)).to.be.equal(2);
  });
});

测试脚本里面应该包括一个或多个describe块,每个describe块应该包括一个或多个it块。

describe、it
  • describe块:称为"测试套件"(test suite),表示一组相关的测试。它是一个函数,第一个参数是测试套件的名称(“加法函数的测试”),第二个参数是一个实际执行的函数。
  • it块:称为"测试用例"(test case),表示一个单独的测试,是测试的最小单位。它也是一个函数,第一个参数是测试用例的名称(“1 加 1 应该等于 2”),第二个参数是一个实际执行的函数。
断言库的用法

判断源码的实际执行结果与预期结果是否一致,如果不一致就抛出一个错误。

expect(add(1, 1)).to.be.equal(2); //调用add(1, 1),结果应该等于2

引入断言库:

var expect = require('chai').expect;

头部是expect方法,尾部是断言方法,比如equal(相等或不相等)、a/an(typeof)、ok(布尔值为true)、match(匹配)等

所有的测试用例(it块)都应该含有一句或多句的断言。

使用方法

运行目录下的文件

npm test
异步代码

在测试完成的时候调用一下回调函数即可,通过添加一个回调函数(通常命名为done)给it()方法,Mocha就会知道它应该等这个回调函数被调用的时候才能完成测试

describe('User', function() {
    describe('#save()', function() {
        it('should save without error', function() {
            var user = new User('Luna')
            user.save(function(err) {
                if(err) done(err);
                else done()
            }//回调函数)
        })
    })
})

由于done()函数接受一个err,所以可以采用更加简单的方法测试异步代码
测试异步函数需要在函数内部手动调用done()表示测试成功,done(err)表示测试出错

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值