Тестирование Angular Jasmine - удаление подстроки из номера

У меня есть некоторые трудности с модульным тестированием функции. Я новичок в этих вещах, и я не знаю, что я могу сделать. У меня есть те 2, если.

Любой совет? Спасибо.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, что ваша проблема заключается в jasmine.createSpy(phoneNumber);, поскольку этот метод находится на стадии тестирования, мы не должны шпионить за ним, а скорее вызывать его реализацию.

Попробуйте следующее:

it('should remove outside prefix', () => {
  const dialingOptions = {
    reqLongDistPrefix: 10, reqOutsidePrefix: 11, dialLongDistanceLength: 12
  } as any;
  coreSvc.getCCDef = jasmine.createSpy().and.returnValue({ DialingOptions: dialingOptions });
  let phoneNumber = '1011129999';
  // !! Remove the following line !!
  // component.removeOutsidePrefix = jasmine.createSpy(phoneNumber);
  const modifiedPhoneNumber = component.removeOutsidePrefix(phoneNumber);
  // !! below is not a good assertion, you can remove it
  // expect(Object.keys(dialingOptions).length).toBe(3);
  expect(modifiedPhoneNumber).toBe('insert what you expect it to be here');
});

Я думаю, вам следует изменить reqLongDistPrefix на '10' (строка из 10) и то же самое с reqOutsidePrefix, потому что вы получаете доступ к свойству .length в этих свойствах, а .length не существует в строках. Проблема в том, что, скорее всего, 2 проверки if не пройдут, вам нужно смоделировать тест, чтобы проверки if прошли и запустилось return phoneNumber.substring, а не phoneNumber. Добавьте несколько console.info вне if и внутри ifs, чтобы увидеть значения.

AliF50 06.05.2022 16:19
.length не существует на номера ***
AliF50 06.05.2022 16:34

Другие вопросы по теме