В моем модульном тесте (с Жасмином) есть такой сервис, который выглядит примерно так:
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
}
);
});
Есть идеи, что пошло не так?
Заранее спасибо!