У меня есть простая реализация в компоненте, который я хочу для модульного тестирования:
ngOnInit()
{
this.subscribeToResponse();
}
subscribeToResponse()
{
this.service.responseSubject.pipe(takeUntil(this.subscribe$)).subscribe(response => {
});
}
Файл спецификации:
describe('myComponent', () => {
let component: myComponent;
let fixture: ComponentFixture<myComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ myComponent ],
providers: [service]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(AddNewAppointmentComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
fit('should create AddNewAppointmentComponent', () => {
expect(component).toBeTruthy();
});
fit('Should subscribe to response from service', ()=>{
// Arrange
let service = TestBed.get(service);
let spy = spyOn(service, 'responseSubject').and.callFake.({ subscribe: () => {} });
//Act
component.subscribeToResponse();
fixture.detectChanges();
//Assert
expect(spy).toHaveBeenCalled();
})
});
Но я получаю:
Ожидаемый шпион был вызван.
Что нужно сделать, чтобы проверить, подписан ли определенный компонент в компоненте после вызова функции?
UPDATE
Ниже приведено тело (пример) моей функции, в которой я подписался на тему. После подписки я выполняю некоторые действия на основе ответа от субъекта:
this.service.responseSubject.pipe(takeUntil(this.subscribe$)).subscribe(response => {
if(response[results])
{
this.moveToStep2();
}
else()
{
this.moveToStep1();
}
});
}
Я хочу проверить, что если возвращается определенный ответ, то вызывается функция, но я не знаю, как смоделировать это поведение.