いくつかの関数で 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);
});
ageInYears および他のいくつかの同様の関数を呼び出すディレクティブ自体の単体テストでは、Date() stubDateConstructor への 1 回の呼び出し後に Date() が実際の Date オブジェクトにリセットされるため、これは機能しません。
これらの状況を処理するための AngularJS / Jasmine のネイティブな方法はありますか、それとも Sinon を調べる必要がありますか?