Sto completando una migrazione da Jasmine 1.3 a 2.0. Finora ho refactored la maggior parte del codice per conformarsi alla sintassi più recente 2.0. Tuttavia, un certo tipo di test sta ancora fallendo.La spia Jasmine si aspetta di essere chiamata con "Oggetto (...)"
In breve, il mio test si presenta come segue:
var obj = new CustomCriteria();
spyOn(my, "function");
my.function(obj);
expect(my.function).toHaveBeenCalledWith({ big: "fat object" });
mia CustomCriteria
classe:
var CustomCriteria = function() {
this.big = "fat object";
};
Il test ha esito negativo con il seguente:
Expected spy function to have been called with [ Object({ big: "fat object" }) ] but actual calls were [ ({ big: "fat object" }) ].
Si noti come l'aspettativa ha un "Object
" che lo avvolge, ma il secondo no. Questo test non ha avuto esito negativo in < 2.0 di Jasmine, ma ora non funziona dopo aver aggiornato Jasmine. Come posso risolvere questo?
Aggiornamento: Ho armeggiato intorno con la creazione di un nuovo oggetto tramite new
ing un function
vs. oggetto la sintassi letterale, e sembra che le __proto__
s sono diversi. Forse questo influenza il paragone sull'uguaglianza di Jasmine?
puoi creare una nuova CustomCrizieria e superarla? –
Visto che hai tutte le risorse necessarie nel tuo ambito di test, puoi anche controllare '.toHaveBeenCalledWith (obj)' – Phil