сделать тест подписаться в void - PullRequest
0 голосов
/ 19 ноября 2018

Я хочу сделать тест с жасмином, я хочу протестировать функцию, имеющую тип void, и когда я делаю тест с использованием подписки, которые имеют проблемы это моя функция:

getMenu(): void {
    this.service.getMenuItems()
    .subscribe(navigation => {
      this.navigationModel = navigation.menu;//belum test
      console.log('test menu', this.navigationModel);
    });
}

Я не знаю, как проверить подписку в пустом меню

1 Ответ

0 голосов
/ 19 ноября 2018

Вы можете проверить значения объектов, которые subscribe изменяются. Шпионить за this.service.getMenuItems().

То, что вы действительно хотите здесь сделать, - это смоделировать поведение вашей службы, вернуть поддельное значение и проверить, обновляется ли this.navigationModel соответствующим образом. Вы не должны тестировать сервис или метод getMenuItems. Пример кода:

it('should change value on subscribe', () => {
  const fakeValue = {}; // your fake value
  spyOn(service, getMenuItems).and.callFake(
    () => asyncData(Object.assign({}, fakeValue)));

  component.getMenu();
  expect(component.navigationModel).toBe(fakeValue);
});

, где asyncData - это служебная функция.

export function asyncData<T>(data: T) {
  return Observable.of(data);
}

Более подробное объяснение: https://angular.io/guide/testing#provide-a-spy-stub-herodetailservicespy

Жасминовые шпионы: https://jasmine.github.io/2.0/introduction.html#section-Spies

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