Я использую moment.js для date/time в своем приложении, но похоже, что он не играет хорошо с издевательскими возможностями Жасмина. Я собрал набор тестов ниже, который показывает мою проблему:Jasmine date mocking with moment.js
jasmine.clock().mockDate
, похоже, не работает в течение минуты, в то время как он отлично работает для Date
.
describe('Jasmine tests', function() {
beforeEach(function() {
jasmine.clock().install();
});
afterEach(function() {
jasmine.clock().uninstall();
});
// Pass
it('uses the mocked time with Date', function() {
var today = new Date('2015-10-19');
jasmine.clock().mockDate(today);
expect(new Date().valueOf()).toEqual(today.valueOf());
});
// Fail
it('uses the mocked time with moment', function() {
var today = moment('2015-10-19');
jasmine.clock().mockDate(today);
expect(moment().valueOf()).toEqual(today.valueOf());
});
});
Почему Date
работа, как ожидается, в то время как moment
не делает? Не moment
с использованием Date
под капотом?
Каков правильный способ издеваться над moment
с использованием жасмина?
Важное примечание - не забудьте сбросить фальшивую дату после теста! AFAIK, вызывая 'jasmine.clock(). MockDate (..)' является глобальным действием, поэтому было бы неплохо установить (и отключить) его в отдельном блоке 'beforeEach'. Затем просто очистите его позже, используя 'jasmine.clock(). Uninstall()' в блоке 'afterEach'. –