jasmine 测试服务 angular - 找不到要监视 getBaseUrl() 的对象

jasmine testing service angular - could not find an object to spy upon for getBaseUrl()

我是 angular 中的 jasmine 单元测试服务的新手,正在尝试实现单元测试服务,该服务具有使用 Observable 作为 return 的简单 get 方法,为此我得到了来自另一个文件的 URL,在这个 ApiEndpointsConfig 中,但由于某种原因,我找不到 getBaseUrl(),非常感谢任何帮助。这是 stackblitz

的 link

您忘记添加了:

apiEndpoints = TestBed.get(ApiEndpointsConfig);
 

在 test.service.spec.ts

中的每个 beforeEach

这将解决您的问题。但是你会得到另一个与测试本身相关的错误;) 如果你不能处理另一个,给我打电话

这是因为服务中使用的url与expectOne中使用的url不同。要抵消此错误,您可以执行以下操作。将api-endpoints.config中的url改为.

 public get getBaseUrl(){
    return 'http://example.com/app/data';
  }

然后将expectOne中的url改成如下:-

const req = httpMock.expectOne(spy() + '/app/data');

只有这样你才会有匹配的 urls 并且 expectOne 会成功。