2017-07-28 76 views
0

我試圖用sinon/mocha單元測試這個函數,它使用request-promise。我附上.promise()以允許訪問所有藍鳥承諾方法。單元測試請求promise,promise()不是函數

按照request-promise自述:

rp(...).promise() or e.g. rp.head(...).promise() which returns the underlying promise so you can access the full Bluebird API 

myModule.js 變種requestPromise =要求( '請求承諾');

function requestWrapper(opts) { 
    // Adds .promise() to allow access to Bluebird methods 
    return requestPromise(opts).promise(); 
} 

module.exports = requestWrapper; 

單元測試

var Promise = require('bluebird'); 
var requestPromise = sinon.stub().returns(Promise.resolve()); 
var rewire = require('rewire'); 
var myModule = rewire('./myModule'); 

myModule.__set__({ 
    requestPromise: requestPromise 
}); 

describe('myModule', function() { 
    var testPromise; 

    it('should...', function() { 
     testPromise = myModule.requestWrapper({ method: 'GET', url: 'http://someurl.com' }) 
    }); 
}); 

錯誤

,我發現了以下錯誤:TypeError: requestPromise(...).promise is not a function

回答

0

你嘲笑是錯誤的(但接近)。

request-promise是一個函數,它返回具有函數promise的對象,該函數返回基礎承諾。

你對存根& rewire的設置是request-promise是一個返回承諾的函數。


一個可能的解決辦法:

var requestPromise = sinon.stub().returns({ promise:() => Promise.resolve() }); 
相關問題