Stubbing async.waterfall with Sinon.JS
Stubbing async.waterfall with Sinon.JS
我试图通过使用Sinon.js存根我的一个函数来测试async.waterfall
。
// functions.js
module.exports = {
// function I don't want to run
doBigThing: function() {
console.log("[doBigThing] was called");
},
// function I want to stub
myFunction: function(number, callback) {
console.log("[myFunction] was called");
doBigThing();
callback(null, number);
},
// function I want to test
waterfall: function(callback) {
return async.waterfall([
async.constant(5), // 5 just for the demo
myFunction
], callback);
}
}
我的测试是:
describe('water', function() {
it ('successfully falls', function() {
// function under test
var waterfall = functions.waterfall;
var callback = function(err, number) {
expect(err).to.be.null;
expect(number).to.equal(5);
};
// I would like this stub to run instead of functions.myFunction
sinon.stub(functions, 'myFunction', function(number, callback) {
console.log("[myFunction] stub was called");
callback(null, number);
});
waterfall(callback);
// I suppose this is happening: myFunction(5, callback)
expect(functions.myFunction.withArgs(5, callback)).to.have.been.called;
expect(callback).to.have.been.called;
});
});
因此,测试通过了,但存根被忽略,因为调用了doBigThing
:
Water
✓ successfully falls
[myFunction] was called
[doBigThing] was called
相反,我希望看到
Water
✓ successfully falls
[myFunction] stub was called
我可能错过了一些东西,我将不胜感激你的帮助。
您正在myFunction
functions
对象的方法存根,但是waterfall
方法中您正在调用myFunction
函数(我实际上无法在我的环境中运行您的代码,我得到"引用错误:未定义myFunction")。所以这应该有效:
// functions.js
var functions = {
// function I don't want to run
doBigThing: function() {
console.log("[doBigThing] was called");
},
// function I want to stub
myFunction: function(number, callback) {
console.log("[myFunction] was called");
functions.doBigThing(); // CHANGE HERE
callback(null, number);
},
// function I want to test
waterfall: function(callback) {
return async.waterfall([
async.constant(5), // 5 just for the demo
functions.myFunction // CHANGE HERE
], callback);
}
};
module.exports = functions;
相关文章:
- node.js测试事件是否是在不使用超时的情况下使用sinon.js发出的
- 什么'与Jasmine相比,使用Sinon.js的优势是什么;内置于间谍
- 是否可以使用Sinon.JS检查函数参数绑定是否正确
- sinon.js验证mock方法's带回调的参数
- 使用sinon.js创建一个“;“间谍对象”;使用基于真实构造函数/原型的间谍方法
- stub.callsArg(index) from Sinon.JS 是做什么的
- Stubbing async.waterfall with Sinon.JS
- 使用 Sinon.js 测试 navigator.browserLanguage 或 navigator.languag
- 如何使用 sinon.js 来模拟/监视 javascript 函数中提到的对象
- 使用 Sinon.js 测试一个函数是否调用 ES6 模块中的另一个函数
- sinon.js监视$.dataTables函数
- 如何在Jasmine中每次测试后自动恢复所有sinon.js间谍
- 如何使用nightwatch.js和sinon.js模拟API响应
- 如何使用sinon.js实现mock/stub回调函数
- Sinon JS:有没有一种方法可以在对象参数's在sinon js中的键值
- 我应该如何避免使用Sinon.js存根属性
- 对$.ajax的调用没有从sinon.js fakeServer启动回调
- Sinon.js fakeServer未使用response方法触发回调
- Sinon.js和instanceof中的模拟类
- backbone.js点击事件间谍不会使用jasmine.js和sinon.js调用