2017-05-30 3 views
0

Ich verwende strong-soap Modul, um Daten von SOAP-Anfrage zu erhalten.Wie stempelt SOAP-Client-Anfrage mit Sinon in Node JS?

var soap = require('strong-soap').soap; 

soap.createClient(url, options, function (err, client) { 
    var method = client.GetInfoSOAP; 
    method(requestQuery, function (err, info) { 
     // bla bla 
    } 
} 

Ich bekomme die erforderlichen Daten. Jetzt Ich möchte Unit-Test-Fall zu spotten die SOAP-Anfrage mit sinon Stub, aber habe keinen Erfolg. Jede Hilfe wäre willkommen.

+0

hat meine antwort dir geholfen? – oligofren

Antwort

0

Was Sie wollen, ist die Steuerung soap Objekt . Sie können das tun Techniken, die in eine von zwei Kategorien fallen:

  1. Dependency Injection - einen Setter aussetzen, durch die man eine gefälschte Modul injizieren können Sie sich selbst steuern zum Testen
  2. Link Nähte Mit - Haken in den Import/Mechanismus benötigen und überschreiben, was das Modul bekommt.

Das Sinon Projekt hat a nice page auf Link Nähte mit durch proxyquire, und ich habe auch detaillierte how to do DI on the issue tracker.

die ersten zu erreichen, alles, was Sie brauchen, ist so etwas wie dies in dem Modul zu tun:

module.exports._injectSoap = (fake) => soap = fake; 

Dann in Ihrem Testcode:

const fakeSoap = { createClient : sinon.stub().returns(/* ? */) } 
myModule._injectSoap(fakeSoap); 

... 
assert(fakeSoap.createClient.calledOnce); 
assert(...) 
0

Hallo, ich habe mein Problem mit der gelöst folgender code:

sinon.stub(soap, 'createClient').yields(null, { 
     GetInfoSOAP: function (request, cb) { 
      return cb(null, myDesiredData); 
     } 
    });