用mocha测试异步瀑布似乎停滞不前
Testing async waterfall with mocha seems to stall
我正试图在现有的节点模块中添加一些mocha测试,但我是新手,在回调方面缺乏具体性阻碍了我。我试着把事情简化为最简单的例子,但它仍然不起作用。
所以我的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中的理解错误第一回调,以获得良好的解释。
相关文章:
- 我可以'我似乎不知道如何修复javascript中的两个lint.有人能帮我理解吗
- Array.length似乎不起作用;console.log则显示其他情况
- 为什么onsubmit函数似乎没有执行
- pageMod没有'似乎不起作用
- 似乎无法使用javascript从AWS 3S中删除密钥
- CSS中的游标属性似乎不适用于USB On The Go
- 点击不'似乎没有开火
- javascript addClass没有'似乎没有触发类的css
- ResolveUrl没有'我似乎不适合当链接到具有动态虚拟目录的外部javascript文件时
- node.js/javascript/couchdb视图到关联数组似乎不起作用
- d3.tree=>转换似乎不起作用
- CSS中的转换似乎失败了,原因是什么
- Jssor$ScaleWidth似乎不起作用
- jquery使用val()复制值似乎可以删除换行符
- toFixed and replace dons'这似乎奏效了
- 共谋似乎使控制器失效
- 用htmlunit点击javascript锚点似乎不起作用
- 遇到错误后,更改检测似乎中断
- Javascript没有't似乎正在处理JSONapi
- 用mocha测试异步瀑布似乎停滞不前