我正在使用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');
存根的returns()
方法的用法:
requestStub = {
get: sinon.stub().returns(this),
on: sinon.stub().returns(this),
};
不会返回对象并引发错误:
类型错误:无法调用未定义的方法“on”
请告诉我,我该如何存根链接函数?