Модульное тестирование: как мне смоделировать свойство innerWidth объекта окна с помощью Angular + Jasmine? - PullRequest
0 голосов
/ 14 июня 2019

Я хочу написать модульный тест, который ожидает, что переменная будет содержать определенное значение в зависимости от innerWidth окна.

В моем модульном тесте я использую window.innerWidth = 1000;. Тем не менее я получаю сообщение об ошибке Cannot assign to 'innerWidth' because it is a read-only property..

Код (home.component.spec.ts):

  xit('should order the cards in the appropriate order on desktop', () => {
    spyOn(component, 'reOrderCards');
    window.innerWidth = 1000;
  })

Есть ли способ издеваться над свойством innerWidth?

1 Ответ

0 голосов
/ 14 июня 2019

Не думай, что это возможно.В качестве обходного пути я создал другую переменную, в которой хранится значение innerWidth, чтобы его можно было правильно протестировать на модуле.

public screenWidth: number;

ngOnInit() {
   this.screenWidth = window.innerWidth; // Get initial innerWidth so the variable is immediately defined for reOrderCards() to recognise
   this.reOrderCards();
}


  @HostListener('window:resize', [])
  onResize() {
    this.screenWidth = window.innerWidth;
    this.reOrderCards();
  }

reOrderCards() {
if(this.screenWidth < 768) {
 // Do logic
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...