Неопределенная ошибка свойства в тестовых случаях в Angular - PullRequest
0 голосов
/ 17 января 2019

Тестовый пример не пройден с ошибкой с указанием неопределенного свойства.

Я передаю roleID в getResults (). Когда я запускаю тест ng для («он должен создать компонент»). Правда, он выдает ошибку -> undefined roleID.

Я также использовал в HTML как * ngIf = "x? .RoleID", где я получаю ту же ошибку.

Пример *.spec.ts файла:

// it('should create', () => {
//     expect(component).toBeTruthy();
//   });
// While running the ng Test for this Component, it is throwing error like ngOnit() Id of undefined property

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Ваши проблемы лежат: у вас нет тестового стенда и нет правильного импорта для запуска вашего ng test.

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

А также официальный документ в тестировании .

У вас будет что-то вроде:

import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { BannerComponent } from './banner.component';

describe('BannerComponent', () => {
  let component: BannerComponent;
  let fixture: ComponentFixture<BannerComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [ BannerComponent ]
    })
    .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(BannerComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeDefined();
  });
});
0 голосов
/ 17 января 2019

Если this.inputArray не определено в вашем компоненте, метод ngOnInit завершится неудачно при попытке доступа к свойству roleID. Во время тестирования вы должны будете убедиться, что инициализировали ввод, т. Е. Свойство inputArray правильно, что может быть выполнено либо с помощью

a) оборачивая ваш тест в компонент тестового драйвера, который адекватно устанавливает ввод, например, с помощью шаблона, например:

<your-component [inputArray]="validArray"></your-component>

b) инициализация атрибута вашего компонента при подготовке теста:

beforeEach(() => {
  fixture = TestBed.createComponent(YourComponent);
  component = fixture.componentInstance;
  // assign valid array to property here:
  component.inputArray = [{roleID: 1, ...}];
  // ... your ngOnInit will be run now:
  fixture.detectChanges();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...