Изменение часового пояса в Jasmin Unit Test с помощью momentJS - PullRequest
0 голосов
/ 22 января 2019

У меня проблема с часовыми поясами при тестировании моего приложения Angular. Например, в моем компоненте Angular у меня есть следующий метод, который принимает некоторые аргументы и возвращает переведенную строку или дату, отформатированную с помощью Angular Pipe

public testStatus(isTestDue: boolean, lastTestDate: any): string {
    if (isTestDue || lastTestDate < 1000 || !lastTestDate) {
      return this.i18Next.transform('ns.common:test.required');
    } else if (lastTestDate > 1000) {
      return this.datePipe.transform(lastBumpDate, 'medium');
    }
}

Теперь я пишу тест для метода, как это так

describe('testStatus', () => {
  fit('should return "Jan 1, 1970, 1:00:12 AM"', () => {
    expect(component.testStatus(false, 12345)).toBe('Jan 1, 1970, 1:00:12 AM');
  });
});

Теперь это работает, когда я запускаю свои тесты локально (мой часовой пояс - центральноевропейское стандартное время). Однако, когда мое приложение построено на сервере Bamboo, я получаю сообщение об ошибке:

Ожидается, что «1 января 1970 г., 12:00:12» будет «1 января 1970 г., 1:00:12»

Похоже, что Bamboo Server использует «Всемирное координированное время» (это я проверил, записав new Date() в консоль). Поэтому я подумал, что я попытаюсь изменить часовой пояс в моем тесте, чтобы он работал локально и на внешнем сервере сборки. Таким образом, я изменил свой код, поэтому для установки часового пояса использую momentJS и jasmin.clock() ...

describe('testStatus', () => {
  beforeEach(() => {
    jasmine.clock().uninstall();
    jasmine.clock().install();
  });

  afterEach(() => {
    jasmine.clock().uninstall();
  });

  fit('should return "Jan 1, 1970, 1:00:12 AM"', () => {
    jasmine.clock().mockDate(moment.tz('Europe/Berlin').format());
    expect(component.testStatus(false, 12345)).toBe('Jan 1, 1970, 1:00:12 AM');
  });
});

Когда экспериментировал с часовыми поясами и пытался заставить тест провалиться локально (установив на moment.tz('Europe/London'), я понял, что часовой пояс не изменяется локально или удаленно. Может кто-нибудь помочь мне определить, как я могу установить дату на использовать Всемирное координированное время или определенный часовой пояс? Или я неправильно подхожу к этому тесту? Любой совет приветствуется.

...