Я пытаюсь проверить наблюдаемую цепочку, в которой вызываются 2 службы. Я пытаюсь проверить, вызваны ли обе службы ровно один раз. Поскольку обе службы возвращают наблюдаемые, я использую mergeMap
для объединения вызовов, как вы можете видеть ниже:
app.component.ts
public aliceInChain(): void {
this.serviceA
.doSomething()
.pipe(
mergeMap(() => {
return this.serviceB.doSomethingElse();
})
)
.subscribe(r => {
console.log(r);
});
}
В моем файле spe c у меня есть:
describe("AppComponent", () => {
let fixture;
let component;
beforeEach(async(() => {
const serviceASpy = jasmine.createSpyObj("serviceA", {
doSomething: of()
});
const serviceBSpy = jasmine.createSpyObj("serviceB", {
doSomethingElse: of()
});
TestBed.configureTestingModule({
imports: [FormsModule],
declarations: [AppComponent],
providers: [
{ provide: ServiceA, useValue: serviceASpy },
{ provide: ServiceB, useValue: serviceBSpy }
]
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(AppComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
fit("should call serviceA and serviceB", done => {
component.aliceInChain();
expect(component.serviceA.doSomething).toHaveBeenCalledTimes(1);
});
});
Я могу убедиться, что первый сервис был вызван, но как я могу проверить, что второй был также? Возможно ли это, так как тестируемый метод недействителен?