2016-04-22 6 views
0

Ich habe implementieren Knoten Js-Code HTTP-APIs mit Request-Modul aufrufen. Für erhalten, posten, setzen, löschen, habe ich direkt aufgerufen Anfrage() des Moduls erfordern,Verwenden Sie Sinon Stub für Request-Konstruktor

var sendRequest = function(req, callback) { 
    request(req, function(err, res) { 
     if (err) { 
      callback(err, null, res); 
     } else { 
      callback(null, res); 
     } 
    } 
} 

Ich will sendrequest(), aber verspotten die Antwort der Anfrage() aufgerufen werden kann. Alle Hinweise dafür.

+0

können Sie sinon verwenden wie hier beschrieben -> http://stackoverflow.com/questions/20050507/creating-request- stub-with-sinon-in-mocha/32868852 # 32868852 – Bianca

+0

Ich ging durch den Link, aber in diesem Fall müssen wir unabhängig schreiben get(), put() usw. Wie Sie oben überprüfen können, habe ich auf Anfrage implementiert(), die sich um alle Methodentypen kümmert. Ich muss diese besondere Bitte() vortäuschen. –

Antwort

0

Eine der vielen Möglichkeiten ist proxyquire zu verwenden, um das Anforderungsmodul Stub:

var proxyquire = require('proxyquire') 
    , assert = require('assert') 
    , requestStub = function (req, callback) { callback(req); }; 

// assuming you export the sendRequest from that file 
var sendRequest = proxyquire('./sendRequest', { 'request': pathStub }); 

describe('sendRequest', function() { 
    it('request', function (done) { 
     var someReq = {a: 'b'}; 
     sendRequest(someReq, function (req) { 
      assert.equal(someReq, req); 
      done(); 
     }); 
    }); 
}); 
+0

Vielen Dank für Ihre Antwort, aber was ich beobachtet habe, ist, dass es funktioniert Ich muss sendRequest() exportieren. In meinem Fall ist sendRequest eine Prototyp-Methode und ich kann sie nicht exportieren. –

+0

@PriyankaWare Sie sind immer willkommen. Wie viel Schaden wird es verursachen, wenn Sie die Funktion exportieren? Kannst du es vielleicht in eine separate private Datei verschieben? –

+0

Es wird sicher keinen Schaden verursachen. Aber das ist die Methode, nach der wir alle Methoden als Prototypmethoden definieren. Wenn es die einzige Option ist, die ich für diese Veränderung wählen kann, wäre es großartig, wenn wir dafür eine Alternative bekommen. –

Verwandte Themen