不知何故,我无法为一个相对非常简单的函数编写Mocha JS测试。 JavaScript源文件看起来像这样
exports.cb = function() {
console.log("The function is called after 3 seconds");
}
exports.testfn = function(cb) {
setTimeout(cb, 3000);
}
测试代码写为
describe('Main Test', function(){
it('A callback Tests', function(done){
asn.testfn(asn.cb);
done();
});
});
我遇到了2个问题。
我查看了文档,但不确定如何做到这一点。
我可以使用promises编写测试,但它运行正常。但是对于我们需要使用setTimeout的场景,应该怎么做?
答案 0 :(得分:1)
假设您尝试测试的是testfn
,您将不会使用cb
,您在测试中使用了回调;见评论:
describe('Main Test', function(){
it('testfn calls the function after three seconds', function(done){
// Remember the start time
var start = Date.now();
// Schedule callback
asn.testfn(function() {
// Has it been at least three seconds?
if (Date.now() - start < 3000) {
// No, trigger an error
} else {
// Yes, all's good!
done();
}
});
});
});
如果您出于某种原因想要致电asn.cb
,您可以在上面的匿名函数中执行此操作,但如果您想测试asn.cb
,则应该从测试中做到这一点{ {1}}。
答案 1 :(得分:0)
describe('Main Test', function(){
it('A callback Tests', function(done){
asn.testfn(function() {
asn.cb();
done();
});
});
});