[英]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.