[英]Testing async waterfall with mocha seems to stall
我正在尝试向我拥有的节点模块中添加一些摩卡测试,但是我是新手,而我在回调方面缺乏具体性阻碍了我。 我试图将事情简化为最简单的示例,但是仍然无法正常工作。
所以我的main.js
是
var async = require('async');
var myObject = {};
myObject.test = function(params) {
async.waterfall([
async.apply(test, params)
],
function(err, result){
if (err) {
console.log('Error: ' + err);
} else {
if (result === 200) {
return result;
}
}
});
};
function test(params, callback) {
if(params) {
callback(null, 200);
}
}
module.exports = myObject;
然后我的测试文件
var assert = require("assert");
var myObject = require('./main');
describe('test', function(){
it("should return 200", function(done){
myObject.test({test: 'such test'}, function(err, res) {
if (err) return done(err);
assert.equal(res, 200);
done(res);
});
})
});
如果我只是运行mocha
它就会超时,所以我对此表示怀疑! 尝试mocha --timeout 15000
也会停顿。 您可以提供的任何方向将不胜感激!
我已经用这个答案走了很远,但无法继续。
好的,我想我对它进行了排序,但是仍然希望获得一些反馈,以查看我是否正确地进行了测试,而不仅仅是设法使我的测试通过。
var async = require('async');
var myObject = {};
myObject.test = function(params, callback) {
async.waterfall([
async.apply(test, params)
],
function(err, result){
if (err) {
console.log('Error: ' + err);
} else {
if (result === 200) {
callback(result);
}
}
});
};
function test(params, callback) {
if(params) {
callback(null, 200);
}
}
module.exports = myObject;
测试文件是
var assert = require(“ assert”); var myObject = require('./ main');
describe('test', function(){
it("should return 200", function(done){
myObject.test({test: 'such test'}, function(res) {
assert.equal(res, 200);
done();
});
})
});
您已解决主要问题,但代码仍被破坏。 当您有一个采用回调方法的异步方法时, 在任何情况下都必须始终仅一次调用该回调方法,否则程序的控制流将中断。 如果编写if/else
子句,则两个分支都必须调用回调函数。 上面的两个if
语句都违反了回调合同。 查看来自The Node Way的了解错误优先回调的详细说明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.