mocha是什么
A feature-rich JavaScript test framework.
mocha是一个javascript的测试框架。可以同时在nodejs和浏览器环境使用。
不过反过来说,基本nodejs相关的应用都能在服务器环境和浏览器环境跑。
写法
我们谈谈mocha的三个写法:
BDD
describe(“Array”, function() {
describe(“#indexOf()”, function() {
it(“Should return -1”, function () {
assert.equal(-1, [1,2,3].indexOf(0));
}
});
});
TDD
suite(“Array”, function() {
suite(“#indexOf()”, function() {
test(“Should return -1”, function () {
assert.equal(-1, [1,2,3].indexOf(0));
}
});
});
exports
module.exports = {
“Array”: {
“#indexOf()”: {
“Should return -1”: function () {
assert.equal(-1, [1,2,3].indexOf(0));
}
}
}
};
核心
其实说来说去,所有的测试框架核心都是一点:Catch Exceptions
。
记住了这一点就行了。
Assertion
主要是下面三个:
- should.js
- chai.js
- expect.js
具体可以根据自己的需要去用。但本质就是写法上的区别。个人推荐使用should.js。
Best Practices
现在我要说一个,最佳实践。用也把它用好来,不是吗?
-- test/
-- mocha.opts
-- xxx.js
Browser support
# 目录结构,依次忘下:
mocha.css
mocha.js
should.js
mocha.setup(‘bdd’)
yourtest.js
mocha.run()
Two Examples
## timeout
describe(“Array”, function() {
describe(“#indexOf()”, function() {
it(“Should return -1”, function (done) {
setTimeout(function() {
assert.equal(-1, [1,2,3].indexOf(0));
done();
}, 1000);
}
});
});
这里需要说明的一点是,mocha最大给定的timeout时间是2000ms。
so,如果你运行的程序超过2s请,加一句:this.timeout(maxTime)
;
async
the same as timeout