2015-06-15 17 views
7

Funktion aufgerufen wurde Objekt als Argument Ich spioniere, empfängt. Ich muss behaupten, dass die Funktion mit bestimmten Eigenschaften des Objekts aufgerufen wurde.Hat mit dem Objekt Behauptung

z: meine SUT hat:

function kaboom() { 

    fn({ 
     foo: 'foo', 
     bar: 'bar', 
     zap: function() { ... }, 
     dap: true 
    }); 
} 

und in meinem Test Ich kann dies tun:

fnStub = sinon.stub(); 
kaboom(); 
expect(fnStub).to.have.been.called; 

und das funktioniert (es ist gut zu wissen, dass fn ‚s genannt wurde). Jetzt muss ich sicherstellen, dass das richtige Objekt an die Funktion übergeben wurde. Ich kümmere mich um nur foo und bar Eigenschaften, das heißt ich für bestimmte Eigenschaften des Arguments Spiel setzen müssen. Wie?

upd: sinon.match() scheint für einfache Objekte zu arbeiten. Lasst uns die Messlatte höher legen, sollen wir?

Was passiert, wenn ich zap Funktion in Behauptung enthalten sein soll? Wie mache ich das?

Antwort

12

Angenommen, Sie verwenden sinon-chai, können Sie calledWith zusammen mit sinon.match verwenden diese

expect(fnStub).to.have.been.calledWith(sinon.match({ 
    foo: 'foo', 
    bar: 'bar' 
})); 
+0

zu erreichen, sondern dass aus irgendeinem Grund nicht für mich arbeiten, würde es sagen, dass die übrigen Eigenschaften nicht übereinstimmen . lass es mich nochmal versuchen, vielleicht mache ich hier etwas falsch – Agzam

+0

was ist die genaue Fehlermeldung, die du bekommst? Ist es sagen, die Funktion ist nicht aufgerufen werden, oder es sagt es mit den falschen Argumenten aufgerufen wird? –

+0

Oh eigentlich fand ich, was nicht funktioniert. sinon.match mit einem Objekt, das eine Eigenschaft einer Funktion besitzt. Das funktioniert nicht. etwas wie 'sinon.match ({foo: sinon.stub()})' kann keinen Weg finden, dies zu tun – Agzam