Node.js sinon测试async.js瀑布函数

时间:2016-09-10 17:47:23

标签: node.js unit-testing asynchronous sinon async.js

考虑以下情况:

function MyClass() { ... }
MyClass.prototype.funcToTest = function() {
    varl self = this;
    async.waterfall([
        async.apply(self.a.func.bind(self.a), 5, 'hi'),
        function(result, callback) {
            ...
            // I want to test this function
            // I can't move it to separate function due to closure variables used
        }
    ], function(err, result) {
           ...
        }
    );
}

module.exports = MyClass;

我如何测试提供给async.waterfall()的任务数组中的第二个函数?
我做了以下但是没有用:

var MyClass = require('my-class;);
var stub = sinon.stub();
stub.yields(null, [1, 2, 3]);
var myClassIsntance = {
    a: {
        func: stub
    }
};
MyClass.prototype.funcToTest.call(myClassIsntance);

但第二个功能没有被调用,我不知道为什么。如果我没有弄错async.waterfall()应该立即调用 at-least 它的第一个任务,并且我使用sinon的yields()方法,因此它会立即调用第二个任务,但它不会似乎工作。我的猜测是,在场景后面有一些异步操作停止执行我不知道的第二个任务。我甚至在调用funcToTest()之后尝试使用sinon的假计时器,看看之后是否会调用第二个任务,但是它没有用。

0 个答案:

没有答案