Mock date constructor with Jasmine

后端 未结 5 1806
轮回少年
轮回少年 2021-01-07 16:46

I\'m testing a function that takes a date as an optional argument. I want to assert that a new Date object is created if the function is called without the argument.

相关标签:
5条回答
  • 2021-01-07 17:24

    Credit to @HMR. Test I wrote to verify:

      it('Should spy on Date', function() {
        var oldDate = Date;
        spyOn(window, 'Date').andCallFake(function() {
          return new oldDate();
        });
        var d = new Date().toISOString;
        expect(window.Date).toHaveBeenCalled();
      });
    
    0 讨论(0)
  • 2021-01-07 17:26

    this worked for me

    var baseTime = new Date().getTime();
    spyOn(window, 'Date').and.callFake(function() {
       return {getTime: function(){ return baseTime;}};
    });
    
    0 讨论(0)
  • 2021-01-07 17:30

    from jasmine example,

    jasmine.clock().install();
    var baseTime = new Date(2013, 9, 23);
    jasmine.clock().mockDate(baseTime);
    jasmine.clock().tick(50)
    expect(new Date().getTime()).toEqual(baseTime.getTime() + 50);
    
    
    afterEach(function () {
        jasmine.clock().uninstall();
    });
    

    jasmine date

    0 讨论(0)
  • 2021-01-07 17:33

    For the users who are using Edge version of Jasmine:

    it('Should spy on Date', function() {
        var oldDate = Date;
    
        // and.callFake
        spyOn(window, 'Date').and.callFake(function() {
            return new oldDate();
        });
    
        var d = new Date().toISOString;
    
        expect(window.Date).toHaveBeenCalled();
    });
    
    0 讨论(0)
  • 2021-01-07 17:34

    for me it worked with:

    spyOn(Date, 'now').and.callFake(function() {
        return _currdate;
      });
    

    instead of .andCallFake (using "grunt-contrib-jasmine": "^0.6.5", that seems to include jasmine 2.0.0)

    0 讨论(0)
提交回复
热议问题