У меня есть компонент, который подписывается на глобальное разветвление, созданное службой, и я sh проверил, действительно ли разветвление получено правильно. Итак, взглянув на код ниже, я sh проверю, вызывается ли eventStartFanout $ внутри TestableComponent.
Я знаю, что код на самом деле работает, выполняя "ручные тесты" = используя мои глаза, но я не знаю, как перевести его на автоматические тесты.
Минимизированный пример моей текущей проблемы;
service:
eventStartSubject = new Subject<any>();
eventStartFanout$ = this.eventStartSubject.asObservable();
function startEvent() {
this.eventStartSubject.next();
}
testable-component:
ngOnInit() {
this.unchanged = true;
this.fanoutService.eventStartFanout$.subscribe(
_ => {
// Test that it reaches here when service triggers
this.changeVariable();
}
);
}
// Extra (unneeded) function to potentially help testing
function changeVariable(){
this.unchanged = false;
}
Моя текущая попытка теста:
beforeEach(() => {
fixture = TestBed.createComponent(TestableComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should do something when fanout happens', async(() => {
const fanoutService: FanoutService = TestBed.get(FanoutService);
component.unchanged = true;
spyOn(component, 'changeVariable');
// It should trigger the subscriber here and change component.unchanged
fanoutService.startEvent();
fixture.detectChanges();
expect(component.unchanged).toBeFalsy();
}));