Se moquant de dates dans AngularJS / Jasmin tests

J'ai une directive qui initialise la Date de l'objet à plusieurs reprises dans plusieurs fonctions.
Lorsque les tests Unitaires, les différentes fonctions que je peux gérer cogner la date comme ceci:

(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);
});

Pour unittesting la directive elle-même, qui appelle à la ageInYears et plusieurs autres fonctions semblables, ce n'est pas pour travailler comme je après un appel à Date() stubDateConstructor aura Date de réinitialisation() à la Date réelle de l'objet.

Est-il de façon native dans AngularJS /Jasmin pour gérer ces situations, ou dois-je chercher dans Sinon par exemple?

  • il lève sur moi, maintenant que je pourrais avoir à initialiser la date et le passer à des fonctions exigeant d'elle ... peut-être que c'est la meilleure solution?
  • Je suis un fan de Timecop.js moi-même. Une bibliothèque avec des fonctions comme Timecop.voyage et Timecop.gel obtient mon approbation.
  • il ressemble sinon.js pourrait aussi fournir un temps de moqueries qui s'applique à des dates (en fonction de la prise en charge du navigateur) sinonjs.org/docs/#clock
InformationsquelleAutor Maarten | 2013-06-13