Sto usando moment.js per data/ora nella mia applicazione, ma sembra che non funzioni bene con le capacità di derisione di Jasmine. Ho messo insieme una suite di test che mostra il mio numero:Jasmine date mocking with moment.js
jasmine.clock().mockDate
non sembra funzionare per il momento, mentre funziona bene per Date
.
describe('Jasmine tests', function() {
beforeEach(function() {
jasmine.clock().install();
});
afterEach(function() {
jasmine.clock().uninstall();
});
// Pass
it('uses the mocked time with Date', function() {
var today = new Date('2015-10-19');
jasmine.clock().mockDate(today);
expect(new Date().valueOf()).toEqual(today.valueOf());
});
// Fail
it('uses the mocked time with moment', function() {
var today = moment('2015-10-19');
jasmine.clock().mockDate(today);
expect(moment().valueOf()).toEqual(today.valueOf());
});
});
Perché il Date
lavoro come previsto, mentre moment
non lo fa? Non è moment
usando Date
sotto il cofano?
Qual è il modo corretto di simulare moment
utilizzando Jasmine?
Nota importante: non dimenticare di reimpostare la data del mock dopo il test! AFAIK, chiamando 'jasmine.clock(). MockDate (..)' è un'azione globale, quindi sarebbe una buona idea impostarlo (e annullarlo) in un blocco 'beforeEach' separato. Quindi basta cancellarlo in seguito usando 'jasmine.clock(). Uninstall()' in un blocco 'afterEach'. –