Posiadam dyrektywę, która kilka razy inicjalizuje obiekt Date w kilku funkcjach. Kiedy Jednostka testowania poszczególnych funkcji może obsłużyć stubbing datę takiego:Dni kpin w testach AngularJS/Jasmine
(function (global) {
var NativeDate = global.Date;
global.stubDateConstructor = function (fakeDate) {
global.Date = function() {
global.Date = NativeDate;
return fakeDate;
}
}
}(this));
// ageInYears()
it("should return the age in years of the person given his/her birthdate", function() {
stubDateConstructor(new Date('2010/01/01'));
expect(ageInYears('01-01-1990')).toBe(20);
stubDateConstructor(new Date('2010/01/01'));
expect(ageInYears('01-01-1900')).toBe(110);
});
Na test jednostkowy samej dyrektywy, która wywołuje ageInYears i kilka innych podobnych funkcji nie będzie działać jak I po jednej rozmowy to Date() stubDateConstructor będzie resetować Date() do prawdziwego obiektu Date.
Czy w AngularJS/Jasmine jest rodzimy sposób radzenia sobie z takimi sytuacjami, czy powinienem zaglądać do Sinona, np.?
to świta na mnie teraz, że mogę mieć aby raz zainicjować datę i przekazać ją funkcjom wymagającym. Może to najlepsze rozwiązanie? – Maarten
Sam jestem fanem Timecop.js. Każda biblioteka z funkcjami takimi jak Timecop.travel i Timecop.freeze uzyska moją zgodę. – ivarni
Wygląda na to, że sinon.js może również zapewnić kpiny czasowe dotyczące dat (zależne od obsługi przeglądarki) http://sinonjs.org/docs/#clock – ossek