当断言函数调用时,chaispy不能识别Sinon存根函数
Sinon stubbed function is not recognised by chai spy when asserting function call
我有两个异步函数返回蓝鸟承诺:
Async1: function() {
return new Promise(function(resolve, reject) {
execute(query)
.then(function(resp) {
resolve(resp);
})
.catch(function(err) {
reject(err);
});
});
}
Async2: function() {
return new Promise(function(resolve, reject) {
execute(query2)
.then(function(resp) {
resolve(resp);
})
.catch(function(err) {
reject(err);
});
});
}
我有另一个模块调用这些方法,像这样:
module.exports = Foo {
Bar: require(./'Bar');
caller: function() {
this.Bar.Async1()
.then(function(resp) {
this.Bar.Async2()
.then(function(resp) {
// do something
}.bind(this))
}.bind(this))
}
}
在我的测试用例中,我想检查栏是否。Async2被调用,我有以下失败的测试用例:
it('should call Foo.Bar.Async2', function(done) {
var spy;
sinon.stub(Foo.Bar, 'Async1').returns(
new Promise(function(resolve) {
resolve();
})
);
sinon.stub(Foo.Bar, 'Async2').returns(
new Promise(function(resolve) {
resolve();
})
);
spy = chai.spy.on(Foo.Bar, 'Async2');
Foo.caller();
expect(spy).to.be.called();
done();
});
我从控制台日志中知道Async2确实被调用,所以我想知道为什么间谍不把它捡起来?
我无法解决这个问题,因为在实现中我不得不将回调传递给只有测试使用的控制器。从这里我可以使用回调来测试代码。
相关文章:
- 如何识别我的网站中的慢速设备
- Google/html5语音识别JavaScript SDK Chrome网络工具包SpeechRecognition
- AngularJS指令只识别双向绑定类型
- php脚本中无法识别ajax传递的值
- 未调用 Sinon 存根
- 识别没有ID或特定属性的对象
- JavaScript无法识别图像
- 识别由不同数量的项组成的json对象
- 无法识别从php创建的Js函数
- 错误:语法错误,无法识别的表达式:不支持的伪:无效/RectJS/Unit Testing
- node.js测试事件是否是在不使用超时的情况下使用sinon.js发出的
- 函数无法识别初始化的变量
- 具有带大括号的字符串时无法识别的表达式
- 在Fiddler JavaScript中识别POST请求
- 未捕获错误:语法错误,无法识别的表达式:input[@type=submit]
- javascript正则表达式来识别所有特殊字符
- 确定(识别)dc.js图表类型
- Ionic应用程序无法识别android手机中的语音
- Sinon Spy不使用Javascript调用或应用程序
- 当断言函数调用时,chaispy不能识别Sinon存根函数