В моем Angular модульном тесте я хочу проверить, есть ли у myComponent.items$
0 результатов, когда я вызываю субъекта myComponent.clearInput$.next()
. До этого я хочу убедиться, что есть некоторые записи. myComponent.items$
может быть заполнено myComponent.nameInput$.next("test")
.
К сожалению, обе подписки срабатывают после вызова обоих субъектов, поэтому myComponent.items$
всегда равно 0.
it("when control touched then clear input value", done => {
myComponent.items$.pipe(first()).subscribe(result => {
expect(result.length).toBe(2);
// it's always 0 because of myComponent.clearInput$.next(); from last line
})
myComponent.nameInput$.next("test");
// Now should wait after code from above will finish then the rest should be executed after that.
myComponent.items$.pipe(first()).subscribe(result => {
expect(result.length).toBe(0);
done(); // test should be finished here
})
myComponent.clearInput$.next();
});
This как предметы называются этими предметами
this.items$ = merge(
this.nameInput$.pipe(
switchMap((name: string) =>
iif(() => this._partyType === "PT",
this.someService.getByName(name),
this.otherService.getByOtherName(name)
)
)
),
this.clearInput$.pipe(
switchMapTo(of([]))
)
);