Угловое 6-модульное тестирование с HttpTestingController с конвейером (map ()) - PullRequest
0 голосов
/ 07 ноября 2018

В моем модульном тесте (с Жасмином) есть такой сервис, который выглядит примерно так:

getData() {    
    OtherService.getProtocol().pipe(
          map((protocol) => {
            this.protocol = protocol;
            return this.http.get(path);
          }))
}

Теперь, чтобы проверить это, я издеваюсь над другой службой со следующим:

otherService = jasmine.createSpyObj('OtherService', ['getProtocol']);
otherService.getProtocol.and.returnValue(of(fakeValue));

И эта часть проверена, работает правильно.

Однако во время модульного теста я не могу поймать http-запрос, сделанный внутри map(), даже вызвав .verify() напрямую

describe('DeeplinkService', () => {
  let injector: TestBed;
  let otherService;
  let myService: MyService;
  let httpMock: HttpTestingController;

  beforeEach(() => {
    otherService = jasmine.createSpyObj('OtherService', ['getProtocol']);
    otherService.getProtocol.and.returnValue(of(fakeValue));
    TestBed.configureTestingModule({
      imports: [
        HttpClientTestingModule
      ],
      providers: [
        MyService,
        { provide: OtherService, useValue: otherService },
      ]
    });
    injector = getTestBed();
    myService = injector.get(MyService);
    httpMock = injector.get(HttpTestingController);
  });

  afterEach(() => {
    httpMock.verify();
  });

  it('fake test', () => {
      myService.getData().subscribe();
      httpMock.verify();  // <== Pass w/o fail
    }
  );

});

Есть идеи, что пошло не так? Заранее спасибо!

...