簡體   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