Is it possible to mock a timezone in Jasmine to test a date object?
I have a function which takes A UTC time string and converts it to a date object.
Using "2016-01-16T07:29:59+0000", I want to be able to verify that when we are in PST we are observing 2016-01-15 23:29:59 as the local date/time
I'd like to be able to switch this time zone back to GMT and then ensure that we observe 2016-01-16 07:29:59 as the local date/time
(How) is this possible? (I am running my Jasmine spec through Grunt with phantomjs)
My function for reference:
utcDateStringToDateObject: function(dateString){
return dateString.indexOf('+')>-1 ? new Date(dateString.split('+')[0]) : new Date(dateString);
}
I am using jasmine 3.4.0, one solution is to use the clock
beforeEach(() => {
jasmine.clock().install();
// whenever new Date() occurs return the date below
jasmine.clock().mockDate(new Date('2024-04-08T06:40:00'));
});
afterEach(() => {
jasmine.clock().uninstall();
});
However, since my tests included timezones, I had to spyOn my service
it('should support work', () => {
const mocked = moment.tz('2019-03-27 10:00:00', 'America/New_York');
spyOn(spectator.service, 'getMoment').and.returnValue(mocked);
const output = spectator.service.foo('bar');
// My asserts
expect(output.start.format(dateFormat)).toBe('2019-03-17T00:00:00-04:00');
expect(output.end.format(dateFormat)).toBe('2019-03-23T23:59:59-04:00');
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With