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.
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();
});
this worked for me
var baseTime = new Date().getTime();
spyOn(window, 'Date').and.callFake(function() {
return {getTime: function(){ return baseTime;}};
});
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
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();
});
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)