我正在开发一个自定义Javascript断言库,主要用于像Mocha这样的测试运行器。
当测试失败时,通过抛出错误,库可以正常工作。但是,当没有错误抛出时,我无法弄清楚如何让库返回“传递”。
我曾尝试阅读其他图书馆的内容,例如Do和Chai,但未能找到这方面。
这是我的断言库my-assert-lib.js
:
module.exports = function(input){
var methods = {
compare: function(comparison){
if(input != comparison){
throw new Error("The comparison string didn't match")
}
else{
return
}
}
}
return methods
}
这是我的test.js
,我正在使用Mocha执行:
var myAssertLib = require("./my-assert-lib.js")("correct");
describe("The comparison string", function(){
it('should match the library input', function(doc) {
myAssertLib.compare("incorrect")
});
it('should match the library input', function(doc) {
myAssertLib.compare("correct")
});
})
我得到了这些结果:
0 passing (2s)
2 failing
1) The comparison string
should match the library input:
Error: The comparison string didn't match
at Object.compare (my-assert-lib.js:5:23)
at Context.<anonymous> (test.js:10:21)
2) The comparison string
should match the library input:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
第一次测试立即退出,应该如此。但是,第二次测试超时了。当没有什么东西可以投掷并且测试运行器应该继续时,my-assert-lib.js
需要做什么?
答案 0 :(得分:0)
我无法说明原因,但是mocha希望您拨打done
功能。
错误:超出2000毫秒超时。对于异步测试和挂钩,请确保&#34; done()&#34;叫做;如果返回Promise,请确保它已解决。
这样做会产生一次通过,一次失败,如预期的那样。
describe("The comparison string", function(){
it('should match the library input', function(done) {
myAssertLib.compare("incorrect")
done()
})
it('should match the library input', function(done) {
myAssertLib.compare("correct")
done()
})
})
> The comparison string
> 1) should match the library input
> ✓ should match the library input
>
>
> 1 passing (14ms) 1 failing
>
> 1) The comparison string
> should match the library input:
> Error: The comparison string didn't match
> at Object.compare (assertLib.js:7:23)
> at Context.<anonymous> (test.js:7:21)