ho una linea come questa nel mio codicecome si fa a bloccare/tempo falso con Jasmine BDD
new Date().getFullYear();
e ne ho bisogno per tornare sempre nello stesso anno.
C'è un modo per farlo con Jasmine?
Grazie.
ho una linea come questa nel mio codicecome si fa a bloccare/tempo falso con Jasmine BDD
new Date().getFullYear();
e ne ho bisogno per tornare sempre nello stesso anno.
C'è un modo per farlo con Jasmine?
Grazie.
In JavaScript è possibile semplicemente sovrascrivere la funzione nella vostra configurazione di prova:
Date.prototype.getFullYear = function(){return 2012}
Si potrebbe anche usare un jasmine spy:
spyOn(Date, 'getFullYear').andReturn(2012)
Un altro modo è quello di inserire la data nel vostro si funzione vuoi test. Che è btw il modo migliore per scrivere codice verificabile. Non creare nuove istanze nelle tue funzioni, perché inizi sempre a testare non solo il tuo codice ma anche queste istanze.
Probabilmente dovrebbe essere 'spyOn (Date.prototype, 'getFullYear'). AndReturn (2012)'. –
Questo ha funzionato per me: 'spyOn (Date.prototype, 'getFullYear'). And.returnValue (2012)' – Sam
Se si sovrascrive la funzione, assicurarsi di ripristinarla dopo il test dell'unità in modo che la funzione sovraccaricata non perdita ad altri test, o forse anche l'applicazione. 1. 'const originalGetFullYear = Date.prototype.getFullYear', 2. Esegui il test, 3.' Date.prototype.getFullYear = originalGetFullYear' –
Timer falsi Sinon.js.
http://sinonjs.org/docs/#clock
ho costruito una drum machine in Node.js utilizzare questo nelle mie specifiche per controllare il codice di temporizzazione. ma ci ho lavorato anche su un altro progetto in cui l'unico modo per ottenere l'anno che volevo era quello di utilizzare un anno specifico, credo per qualche motivo nel 1969. Immagino che sia l'inizio dell'era Unix.
in ogni caso, era quasi un anno fa, quindi probabilmente l'hanno già risolto.
Non potresti semplicemente stubare il metodo Date instance come qualsiasi altra classe? –
come vorresti? – Cezar
Allo stesso modo degli esempi nei loro documenti, ma con la data invece - non posso provarlo ora ma penserei che funzionerebbe allo stesso modo. –