Angular Интерфейсы модульного тестирования в Карма Жасмин: не может прочитать свойство * неопределенного - PullRequest
0 голосов
/ 10 февраля 2020

Как объявить и использовать интерфейсы в Angular модульном тесте Karma Jasmine? Ниже приведена ошибка, она указывает неопределенность для первого свойства интерфейса; при попытке запустить компонент

Невозможно прочитать свойство 'primaryPropertyMailingAddressId' из неопределенного

Карма / Жасмин:

 beforeEach(async(() => {

    fixture = TestBed.createComponent(PropertySitusFinalizeComponent);
    component = fixture.componentInstance;

    component.jsonData = {};  // removing or keeping this line does not change the error message

    fixture.detectChanges();

  }));

  it('should create', () => {
    expect(component).toBeTruthy();
  });

Компонент:

export class PropertySitusFinalizeComponent implements OnInit {

  @Input() jsonData: PropertySitusAddressContainer;

Интерфейс:

export interface PropertySitusAddressContainer {
  queueItemId?: number;
  existingPropertySitusAddress?: PropertySitusAddress;  

export class PropertySitusAddress {

    primaryPropertyMailingAddressId?:number = null;
    propertyId?: number = null;
    propertySitusAddressId?: number = null;
    addressFormatId?: number = null; 
    apn?: string = null;

Ресурс:

Как объединить тестовая модель интерфейсов в машинописи?

1 Ответ

1 голос
/ 10 февраля 2020

Вам нужно инициализировать значения:

@Input() jsonData: PropertySitusAddressContainer = { existingPropertySitusAddress = {} }

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

В вашем html, использование value = "jsonData?.existingPropertySitusAddress?.primaryPropertyMailingAddressId" будет хорошим вариантом для type safety.

...