【发布时间】:2016-10-12 00:53:42
【问题描述】:
我在为要在 typescript 中测试的方法使用的方法存根时遇到问题。为了清楚起见,我在示例中删除了很多方法本身,但基本上我有一个调用getService 方法的getServiceWithRetry 方法。
即。
export function getServiceWithRetry(name:string, triesLeft:number) {
//do stuff
getService(name)
//do more stuff
}
export function getService(name:string) {
//lookup stuff
}
这是作为Lookup 导入我的测试的。如果我在测试中调用getService,我可以成功地存根getService 方法,但是当我运行getServiceWithRetry 时,它会调用实际的getService 方法而不是存根。有谁知道我做错了什么?
it("test", function(done) {
let serviceStub = sinon.stub(Lookup, 'getService')
serviceStub.returns(Promise.resolve("resolved"))
//this uses the stub
Lookup.getService("name").then(function(value) {
console.log("success: "+value)
}, function(error) {
console.log("error: "+error)
})
//this calls the actual method, not the stub as I would expect it to
Lookup.getServiceWithRetry("serviceName", 4).then(function(value) {
console.log("success: "+value)
}, function(error) {
console.log("error: "+error)
})
done()
})
注意:对于那些不熟悉 bluebird 承诺的人,.then(function(value){}, function(error){}) 方法会处理承诺成功和承诺被拒绝时发生的情况。
【问题讨论】:
标签: javascript typescript sinon