spyOn响应返回为空

时间:2019-11-27 14:58:38

标签: angular rxjs karma-jasmine spyon

it('should inject acaQQService and run getQQFormData', inject(
    [AcaQqService], (service: AcaQqService) => {
      const resp: QuickQuoteEntity  = <QuickQuoteEntity><unknown>[];
      spyOn(service, 'getQQFormData').and.returnValue(of(resp));
      expect(resp).not.toBeNull();
      console.log(resp);
    }));

侦听此服务呼叫时,数据返回为空。类型转换似乎无法解决问题。

1 个答案:

答案 0 :(得分:1)

请注意,spyOnspy安装到现有对象的方法上,但不会调用该方法。因此,在将间谍程序安装到方法AcaQqService.getQQFormData和调用expect之间,您需要调用AcaQqService.getQQFormData

此外,您无需检查AcaQqService.getQQFormData(一个Observable)的结果,而是检查测试中定义的resp对象。为此,可以将其重写如下。

spyOn(service, 'getQQFormData').and.returnValue(of(resp));
service.getQQFormData(...).subscribe(v => expect(v).toBe(resp));

但是这种测试是没有意义的,因为被测试的方法是模拟的,因此不涉及服务的内部。