2015-06-15 14 views
7

Funzione Sto spiando, riceve oggetto come argomento. Devo affermare che la funzione è stata chiamata con determinate proprietà dell'oggetto.È stato chiamato con asserzione dell'oggetto

per esempio: la mia SUT ha:

function kaboom() { 

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

e nella mia prova posso fare questo:

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

e che funziona (è bene sapere che fn 's stato chiamato). Ora ho bisogno di assicurarmi che l'oggetto giusto sia passato nella funzione. Mi interessa solo le proprietà foo e bar, ovvero devo impostare la corrispondenza per le proprietà specifiche dell'argomento. Come?

upd: sinon.match() sembra funzionare per oggetti semplici. Alziamo il bar, vero?

Cosa fare se si desidera includere la funzione zap in asserzione? Come faccio a fare quel lavoro?

risposta

12

Supponendo che si sta utilizzando sinon-chai, è possibile utilizzare calledWith con sinon.match per raggiungere questo

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

ma che per qualche motivo non ha funzionato per me, direbbe che le proprietà di riposo non corrispondono . fammi riprovare, forse sto facendo qualcosa di sbagliato qui – Agzam

+0

qual è l'esatto messaggio di errore che stai ricevendo? Sta dicendo che la funzione non viene chiamata affatto o dice che viene chiamata con gli argomenti sbagliati? –

+0

Oh, in realtà ho trovato quello che non funzionava. sinon.match con un oggetto che ha una proprietà di una funzione. Non funziona qualcosa come 'sinon.match ({foo: sinon.stub()})' non riesce a trovare un modo per farlo funzionare – Agzam

Problemi correlati