node.js - 使用 mocha 单元测试异步 waterfall

标签 node.js unit-testing asynchronous tdd mocha.js

我使用 Mocha 作为我的 Node.js 应用程序的测试框架。

我有一个使用异步 waterfall Node 模块的现有模块。我正在尝试为其编写一个单元测试用例。我无法为数组中的第二个函数编写测试用例。有关如何将一个函数的结果传递到数组中的下一个函数的任何提示 var async = require('async');

module.exports.resetPassword = function(req,res,next){
 async.waterfall([
  function(done){
    var token = do something;
    done(err,token);
  },
   function(token,done){
       //do some stuff
     res.status(200).send('success');
   },
    ]function(err){ 
     //send failure response
     });
};

最佳答案

我想我现在明白了这个问题。 在您的测试中 - 您执行以下行:

user.resetPassword(request,response,next);

紧接着 - 这行:

cryptoStub.restore();

问题是 - async.waterfall 将启动第一个方法,但在运行第二个方法之前,它将运行单元测试中的下一行,因此您看不到下一个方法。解决这个问题的代码如下:

user.resetPassword(request,response,function(err) {
    cryptoStub.restore();
    done();
});

看起来更好吗?

关于node.js - 使用 mocha 单元测试异步 waterfall ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33795226/

相关文章:

java - 我应该在多大程度上隔离我的单元测试方法?

ruby - JRuby 多核处理用法

javascript - 如何在 node.js 中包含默认模型作为引用名称?

node.js - 使用 `d3.legend` 时出错 : Uncaught TypeError: node. getAttribute 不是函数

javascript - 响应 cookie 未在 Fetch 请求中发送

c# - 如何在不完全阻塞线程的情况下将线程池中的线程暂停执行一定时间?

javascript - 如何处理异步ajax响应

node.js - 在文件更改时重新启动 Heroku 本地?

java - 我应该在什么条件下测试 get() 和 set() 方法?

unit-testing - 使用松露直接测试以太坊事件