не может прочитать свойство undefined при попытке чтения из объекта массива - PullRequest
0 голосов
/ 04 марта 2020

Я пишу жасминовый тест в angular 8, и при получении ошибки невозможно прочитать свойство undefined. Это пытается прочитать свойство объекта массива. Я попытался инициализировать, но это не похоже на работу.

Я пытаюсь инициализировать component.myData

Тест

fit('should update  when acceptSection is called ', () => {
   let updateSpy: jasmine.Spy;
   setupComponent();

   component.myData = [] = ['reviewWindowExpiry'];

   updateSpy = spyOn(component, 'update').withArgs(3).and.returnValue(true);
   component.acceptSection(true);
   expect(updateSpy).toHaveBeenCalled();
});

Компонент

myData: any;

getNextSectionContent(contentIndex: number) {
    // Get scroll height of agreement
    this.agreementScrollHeight = this.scroll.nativeElement.scrollHeight;

    // Calculate remaining days left on next agreement
    this.hoursUntil = null; // reset this value
    this.daysUntil = differenceInDays(this.myData[contentIndex].reviewWindowExpiry, this.todaysDate);

    if (this.daysUntil < 1) {
      this.hoursUntil = differenceInHours(this.myData[contentIndex].reviewWindowExpiry, this.todaysDate);
      this.daysUntil = null;
    }

    if (this.myData[contentIndex] !== undefined) {
      this.agreementData = this.myData[contentIndex].data;
      this.scroll.nativeElement.scrollTop -= this.agreementScrollHeight;
    } else {
      this.agreementData = 'NO MORE AGREEMENTS!!';
    }
  }

1 Ответ

0 голосов
/ 04 марта 2020

Вы передаете .withArgs (3) в функцию обновления.

Это устанавливает или влияет на значение contentIndex? (например, возможно зацикливает массив 3 раза).

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

Дает ли это значение?

//contentIndex value is 0
this.myData[0].reviewWindowExpiry

Также подумайте, что Date.UT C вернет функцию, попробуйте

 component.myData = [{'reviewWindowExpiry': Date.now()}];

Чтобы получить число c значение в миллисекундах .

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