gpt4 book ai didi

javascript - 模拟需要服务

转载 作者:行者123 更新时间:2023-12-03 04:18:55 27 4
gpt4 key购买 nike

我正在尝试使用 sinon 模拟我的函数使用的服务,但我找不到将模拟注入(inject)到我的函数中的方法。

使用require获取服务

我的功能是这样的:

// something.js
const service = require('./service');
module.exports = {
// do something using a service
doSomething: function (options) {
let results = [];
return service.foo(option.param)
// and return the value adding some logic
.then(function(resultFromService){
// want to test this flag
if ( options.someFlag ) {
results = resultFromService;
}
})
.then(function(){
/// more existing code here
return results;
});
}
}

我正在尝试像这样模拟service.foo:

const something = require('../../something.js');
const sinon = require('sinon');
...
it('should doSomething by calling foo in the service', function(done) {

///I'm getting this error here: Error: Trying to stub property 'foo' of undefined
sinon.stub( something.service , 'foo' )
.returns(when(function() {
return ['bar', 'baz'];
}));


let promise = something.doSomething({param:'for service', someFlag:true});
});

然后检查我的 doSomething 方法是否确实执行了它应该执行的逻辑。

问。如何为该服务注入(inject)模拟服务和/或模拟函数,该服务在我的 something 函数中定义为 private 闭包作用域变量。

最佳答案

我相信您需要在测试中 require service 并直接 stub 它。

let service = require('../../service.js');
sinon.stub(service, 'foo' )
.returns(when(function() {
return ['bar', 'baz'];
}));

关于javascript - 模拟需要服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44034716/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com