是否可以在 Jasmine 中模拟时区来测试日期对象?
我有一个函数,它接受 UTC 时间字符串并将其转换为日期对象。
使用“2016-01-16T07:29:59+0000”,我希望能够验证当我们处于太平洋标准时间时我们正在观察 2016-01-15 23:29:59 作为本地日期/时间
我希望能够将此时区切换回 GMT,然后确保我们将 2016-01-16 07:29:59 视为本地日期/时间
(如何)这可能吗? (我正在使用 phantomjs 通过 Grunt 运行我的 Jasmine 规范)
我的函数供引用:
utcDateStringToDateObject: function(dateString){
return dateString.indexOf('+')>-1 ? new Date(dateString.split('+')[0]) : new Date(dateString);
}
最佳答案
我正在使用 jasmine 3.4.0,一种解决方案是使用时钟
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();
});
但是,由于我的测试包括时区,我不得不监视我的服务
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');
});
关于javascript - 在 PhantomJS 中模拟时区以进行 Jasmine 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34945108/