У меня есть директива, которая несколько раз инициализирует объект Date несколькими функциями. Когда модуль тестирует отдельные функции, я могу обрабатывать дату следующего вида:
(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);
});
Для unittesting самой директивы, которая вызывает ageInYears и несколько других подобных функций, это не будет работать, поскольку я после одного вызова Date() stubDateConstructor будет иметь reset Date() для реального объекта Date.
Есть ли собственный способ в AngularJS/Jasmine для обработки этих ситуаций, или я должен смотреть в Sinon, например.