Angular http请求单元测试

时间:2018-12-08 02:27:16

标签: angular typescript http testing

我正在尝试测试以下功能:

getencomenda(): void {
    const _id=  this.route.snapshot.paramMap.get('_id');
   // const _id2 = +this.route.snapshot.paramMap.params._id;
    this.encomendaService.getencomenda(_id)
      .subscribe(encomenda => this.encomenda = encomenda);

    }

这是我的考验:

describe('getencomenda', () => {
            it('makes expected calls', () => {
                const encomendaServiceStub: encomendaService = fixture.debugElement.injector.get(encomendaService);
                spyOn(encomendaServiceStub, 'getencomenda');
                comp.getencomenda();
                expect(encomendaServiceStub.getencomenda).toHaveBeenCalled();
            });
        });

而且我收到以下错误:TypeError:无法读取未定义的属性“ subscribe”

1 个答案:

答案 0 :(得分:0)

您正在监视该方法,但不要告诉茉莉花被调用时该怎么做。这意味着茉莉花会记录对该函数的调用,但不会调用您正在监视的真实函数,因此此类调用将返回undefined而不是Observable。错误只是确认您无法订阅未定义的值。

因此,您不仅需要指示茉莉花来监视该函数,而且还要调用原始函数或返回一些可观察的模拟函数响应:

free

spyOn(encomendaServiceStub, 'getencomenda').and.callThrough();