使用回调存根函数,不返回promise
我有一个调用函数的服务,我正在为该服务编写测试,我需要在该服务中存根函数,该函数具有回调而不是返回一个promise。当我为我做存根并给出虚拟返回但是当服务期望回调时它会挂起,这是我的测试代码
describe('Testing Token Service', () => {
let _stub =null;
beforeEach(async()=>{
_stub = sinon.stub(tModel.prototype, "save")
})
afterEach(async()=>{
if(_stub){
_stub.restore()
}
})
it('testing function saveToken_mongo() ', (done) => {
_stub.returns(Promise.resolve( {'status' : 'true'} ))
token_service.saveToken_mongo({},function(err, data){
console.log(err, data)
done();
})
// done()
}); });
这是我正在编写测试的服务功能
Service.prototype.saveToken_mongo = function(token, callback){
var _token = new tModel( token ) ;
_token.save(function(err, data){
if(err){
callback(err, null);
return ;
}
else{
callback(null, {'status':true})
return ;
}
}) }
我需要使用存根从该函数返回虚拟回调。
回答如下:stub.returns
用于普通函数而不用于回调。由于save
是回调函数,我们可以使用yields
。
_stub.yields(null, {'status' : 'true'});
第一个参数用于错误值,第二个参数用于数据。
作为参考:
https://sinonjs/releases/v7.1.1/stubs/#stubyieldsarg1-arg2-
使用回调存根函数,不返回promise
我有一个调用函数的服务,我正在为该服务编写测试,我需要在该服务中存根函数,该函数具有回调而不是返回一个promise。当我为我做存根并给出虚拟返回但是当服务期望回调时它会挂起,这是我的测试代码
describe('Testing Token Service', () => {
let _stub =null;
beforeEach(async()=>{
_stub = sinon.stub(tModel.prototype, "save")
})
afterEach(async()=>{
if(_stub){
_stub.restore()
}
})
it('testing function saveToken_mongo() ', (done) => {
_stub.returns(Promise.resolve( {'status' : 'true'} ))
token_service.saveToken_mongo({},function(err, data){
console.log(err, data)
done();
})
// done()
}); });
这是我正在编写测试的服务功能
Service.prototype.saveToken_mongo = function(token, callback){
var _token = new tModel( token ) ;
_token.save(function(err, data){
if(err){
callback(err, null);
return ;
}
else{
callback(null, {'status':true})
return ;
}
}) }
我需要使用存根从该函数返回虚拟回调。
回答如下:stub.returns
用于普通函数而不用于回调。由于save
是回调函数,我们可以使用yields
。
_stub.yields(null, {'status' : 'true'});
第一个参数用于错误值,第二个参数用于数据。
作为参考:
https://sinonjs/releases/v7.1.1/stubs/#stubyieldsarg1-arg2-