javascript单元测试框架mocha 和 断言库 assert

简介

mocha是一款功能丰富的javascript单元测试框架,它既能够运行在nodejs环境中,也能够运行在浏览器环境中。javascript是一门单线程语言,最显著的特色就是有不少异步执行。同步代码的测试比较简单,直接判断函数的返回值是否符合预期就好了,而异步的函数,就须要测试框架支持回调、promise或其余的方式来判断测试结果的正确性了。mocha能够良好的支持javascript异步的单元测试。mocha会串行地执行咱们编写的测试用例,能够在将未捕获异常指向对应用例的同时,保证输出灵活准确的测试结果报告。javascript

安装

npm install mocha -g

简单的例子

var assert = require('assert')
    describe('Array', function() {
        describe('#indexOf()', function() {
            it('should return -1 when the value is not present', function() {
                assert.equal(-1, [1, 2, 3].indexOf(4))
            })
        })
    })
复制代码

在终端中运行后如出现下面结果则为经过:html

Array
    #indexOf()
      ✓ should return -1 when the value is not present


  1 passing (9ms)
复制代码

一个简单的测试包含describe和it,describe声明了一个TestSuit(测试集合) ,并且测试集合能够嵌套管理,而it声明定义了一个具体的测试用例。java

assert为断言库,除了assert还有以下几种,Mocha容许你使用你喜欢的断言库node

assert断言库

首先先引入断言assert模块git

var assert = require('assert');
复制代码

1.assert(value[, message])    assert.ok() 的别名。github

  • value 要检查是否为真的值。
  • message |
assert.ok(true); 同  assert(true)
// 测试经过。
assert.ok(false, '不是真值'); 同  assert(false, '不是真值')
// 抛出 AssertionError: 不是真值
复制代码

2.assert.equal(actual, expected[, message])npm

assert.equal(1, 1);
// OK, 1 == 1
assert.equal(1, '1');
// OK, 1 == '1'

assert.equal(1, 2);
// AssertionError: 1 == 2
assert.equal({ a: { b: 1 } }, { a: { b: 1 } });
// AssertionError: { a: { b: 1 } } == { a: { b: 1 } }
复制代码

3.assert.fail([message])segmentfault

  • message | 默认为 'Failed'。

抛出 AssertionError,并带上提供的错误信息或默认的错误信息。 若是 message 参数是 Error 的实例,则会抛出它而不是 AssertionError。api

const assert = require('assert').strict;

assert.fail();
// 抛出 AssertionError [ERR_ASSERTION]: Failed

assert.fail('失败');
// 抛出 AssertionError [ERR_ASSERTION]: 失败

assert.fail(new TypeError('失败'));
// 抛出 TypeError: 失败
复制代码

参考

nodejs.cn/api/assert.…promise

segmentfault.com/a/119000001…

相关文章
相关标签/搜索