繁体   English   中英

用摩卡测试异步瀑布似乎停滞了

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM