接口

优质
小牛编辑
136浏览
2023-12-01

Mocha的“界面”系统允许开发人员选择他们的DSL风格。Mocha有BDDTDDExportsQUnitRequire -style接口。

BDD

BDD接口提供describe()context()it()specify()before()after()beforeEach(),和afterEach()

context()只是一个别名describe(),行为方式相同; 它只是提供了一种让测试更容易阅读和组织的方法。同样,specify()是别名it()

所有前面的示例都是使用BDD接口编写的。

  describe('Array', function() {
  before(function() {
    // ...
  });
  describe('#indexOf()', function() {
    context('when not present', function() {
      it('should not throw an error', function() {
        (function() {
          [1,2,3].indexOf(4);
        }).should.not.throw();
      });
      it('should return -1', function() {
        [1,2,3].indexOf(4).should.equal(-1);
      });
    });
    context('when present', function() {
      it('should return the index where the element first appears in the array', function() {
        [1,2,3].indexOf(3).should.equal(2);
      });
    });
  });
});

TDD

TDD接口提供suite()test()suiteSetup()suiteTeardown()setup(),和teardown()

suite('Array', function() {
setup(function() {
  // ...
});
suite('#indexOf()', function() {
  test('should return -1 when not present', function() {
    assert.equal(-1, [1,2,3].indexOf(4));
  });
});
});

出口

出口界面很像mocha的前身快报。该键beforeafterbeforeEach,和afterEach属于特例,对象的值是套房和函数值是测试情况:

module.exports = {
before: function() {
  // ...
},
'Array': {
  '#indexOf()': {
    'should return -1 when not present': function() {
      [1,2,3].indexOf(4).should.equal(-1);
    }
  }
}
};

QUnit

QUnit灵感的接口匹配QUnit,那里的测试套件标题简单的测试案例之前定义的“扁平化”的样子。像TDD,它使用suite()test(),但类似BDD,还含有before()after()beforeEach(),和afterEach()

function ok(expr, msg) {
if (!expr) throw new Error(msg);
}
suite('Array');
test('#length', function() {
var arr = [1,2,3];
ok(arr.length == 3);
});
test('#indexOf()', function() {
var arr = [1,2,3];
ok(arr.indexOf(1) == 0);
ok(arr.indexOf(2) == 1);
ok(arr.indexOf(3) == 2);
});
suite('String');
test('#length', function() {
ok('foo'.length == 3);
});

要求

require界面允许您所需要的describe,直接用朋友的话require,并呼吁他们任何你想要的。如果要在测试中避免全局变量,此接口也很有用。

注意require接口不能通过node可执行文件运行,必须通过运行mocha

var testCase = require('mocha').describe;
var pre = require('mocha').before;
var assertions = require('mocha').it;
var assert = require('chai').assert;
testCase('Array', function() {
pre(function() {
  // ...
});
testCase('#indexOf()', function() {
  assertions('should return -1 when not present', function() {
    assert.equal([1,2,3].indexOf(4), -1);
  });
});
});