0

目前我正在尝试编写一个将执行以下操作的测试:

  • 加载我的组件
  • 等待服务类返回(HTTP Call + Observable)
  • 校验值返回。

服务等级:

getMyInfo(): Observable<any[]> {
        return this.httpClient.get(`${this.serviceurl}/all`) as Observable<any[]>;
}

相关组件代码:

ngOnInit() {
    this.myService.getMyInfo().subscribe((data: any[]) => {
      console.log('I was called')
      this.myInfo = data;
    })
}

在测试类中,使用Service中的这个方法将不起作用,该方法被调用,但是返回永远不会在类中应用(订阅)。

使用存根有效,但这不是我想要的,因为我想要 e2e。

const serviceStub = {
  getMyInfo() {
    return fakeAsyncResponse([{  id: 1,name: 'myname'}]);
  }
};

 it("should request names on component initiation.", inject([FrontendComponent, Service], async(component: FrontendComponent, service: Service) => {
    let debugElement = fixture.debugElement;
    let Service = debugElement.injector.get(Service);
    let incrementSpy = spyOn(Service, 'getMyInfo').and.callThrough();
    component.ngOnInit();
    expect(incrementSpy).toHaveBeenCalled();
    await fixture.whenStable();
    fixture.detectChanges();    
    console.log(component.myInfo);
    expect(component.myInfo.length).toEqual(1);
  }));

总而言之,我怎样才能处理真正的 http 调用,然后处理期望断言而不存根服务类?

4

0 回答 0