DYNAMICALLY GENERATING TESTS

Mocha可以使用Function.prototype.call和函数表达式来定义测试用例,其实就是动态生成一些测试用例,不需要使用什么特殊的语法。和你见过的其他框架可能有所不同,这个特性可以通过定义一些参数来实现测试用例所拥有的功能。

  1. var assert = require('chai').assert;
  2. function add() {
  3. return Array.prototype.slice.call(arguments).reduce(function(prev, curr) {
  4. return prev + curr;
  5. }, 0);
  6. }
  7. describe('add()', function() {
  8. var tests = [
  9. {args: [1, 2], expected: 3},
  10. {args: [1, 2, 3], expected: 6},
  11. {args: [1, 2, 3, 4], expected: 10}
  12. ];
  13. tests.forEach(function(test) {
  14. it('correctly adds ' + test.args.length + ' args', function() {
  15. var res = add.apply(null, test.args);
  16. assert.equal(res, test.expected);
  17. });
  18. });
  19. });

上面的测试用例所产生的结果如下:

  1. $ mocha
  2. add()
  3. correctly adds 2 args
  4. correctly adds 3 args
  5. correctly adds 4 args