我有一個指令可以在多個函數中多次初始化Date對象。 當單元測試的各個功能我可以處理磕碰這樣的日期:在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);
});
對於單元測試指令本身,它調用ageInYears和其他一些類似的功能,這不會一個電話後,我的工作到Date()stubDateConstructor將重置Date()爲真正的Date對象。
在AngularJS/Jasmine中是否有一種本地方式來處理這些情況,還是我應該看看Sinon?
它的曙光在我身上,我可能有初始化日期並將其傳遞給需要它的函數。可能這是最好的解決方案嗎? – Maarten
我是Timecop.js自己的粉絲。任何具有Timecop.travel和Timecop.freeze功能的庫都會得到我的批准。 – ivarni
它看起來像sinon.js也可能提供適用於日期的時間模擬(取決於瀏覽器的支持)http://sinonjs.org/docs/#clock – ossek