最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

使用回调存根函数,不返回promise

IT培训 admin 4浏览 0评论

使用回调存根函数,不返回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-

发布评论

评论列表 (0)

  1. 暂无评论