【发布时间】:2015-10-26 20:40:01
【问题描述】:
为了编写我的测试,我在堆栈中使用 mocha 框架,Chai 作为断言库,Sinon.JS 用于模拟、存根和间谍。假设我有一些链式函数,例如:
request
.get(url)
.on('error', (error) => {
console.log(error);
})
.on('response', (res) => {
console.log(res);
})
.pipe(fs.createWriteStream('log.txt'));
考虑到我想用所需的参数断言它们的调用,最好的方法是什么?
这样的结构:
requestStub = {
get: function() {
return this;
},
on: function() {
return this;
}
//...
};
不允许我断言这些方法,例如:
expect(requestStub.get).to.be.called;
expect(requestStub.on).to.be.calledWith('a', 'b');
stub的returns()方法的使用:
requestStub = {
get: sinon.stub().returns(this),
on: sinon.stub().returns(this),
};
不会返回对象,并导致错误:
TypeError: 无法调用未定义的“on”方法
请告诉我,我如何存根链式函数?
【问题讨论】:
标签: javascript node.js unit-testing mocha.js sinon