Как проверить, подписан ли субъект в жасмине - PullRequest
0 голосов
/ 07 июля 2019

У меня есть простая реализация в компоненте, который я хочу для модульного тестирования:

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();
      }
    });
    }

Я хочу проверить, что если возвращается определенный ответ, то вызывается функция, но я не знаю, как смоделировать это поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...