Как написать угловой модульный тест для функции и корпуса переключателя

#angular #unit-testing

Вопрос:

 extractValue(exemptionLevel: string, exemptionValue: any): string {
switch(exemptionLevel) {
  case "C": return exemptionValue.isoCountryCode.toString();
  case "R": return exemptionValue.districtNumber.toString();
  case "D": return exemptionValue.divisionCode.toString();
  case "T": return exemptionValue.terminalNumber.toString();
}
 

}

я попробовал ниже

 it('expected value extractValue() c', () => {
component.extractValue('C','isoCountry');
expect('C').toEqual('isoCountry')

// expect(component.extractValue(expectedLevel[0], exemptionValue.isoCountryCode)).toHaveBeenCalled();
 

});

он показывает ошибку TypeError: Не удается прочитать свойство «toString» неопределенного

Ответ №1:

Вы отправляете строковый параметр функции и ожидаете получить доступ к ее isoCountryCode свойству, которое всегда будет неопределенным. Вы должны предоставить тестируемой функции exemptionValue макет.

 it('expected value extractValue() c', () => {
  const isoCountryMockResult = 'someResult';
  const exemptionValue = { isoCountryCode: isoCountryMockResult } // define your mock
  component.extractValue('C', exemptionValue);
  expect('C').toEqual(isoCountryMockResult)
}
 

Это должно сработать, но вы должны приспособить его к своим потребностям

Комментарии:

1. работает нормально . спасибо, что развлекаешься

2. Тогда вы должны принять ответ

3. я согласился.. Спасибо за отзыв! Вам нужно не менее 15 репутации, чтобы проголосовать, но ваши отзывы были записаны.

4. Как написать тестовую подписку внутри конструктора ` конструктор(частная служба исключений:Служба исключений){ this.exemptionService.getGlobalExemptionReasons().subscribe(причина => this.причина = причина); }`