接口
优质
小牛编辑
133浏览
2023-12-01
Mocha的“界面”系统允许开发人员选择他们的DSL风格。Mocha有BDD,TDD,Exports,QUnit和Require -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的前身快报。该键before
,after
,beforeEach
,和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);
});
});
});