HttpTestingController ExpectOne仅验证api端点

时间:2018-09-13 11:06:09

标签: angular typescript unit-testing

我只想测试请求是否正在发送到正确的api端点。例如:我有一个服务请求将请求发送到http://localhost:port/sth/sth2,并且我只想在有http://localhost:port的情况下才拒绝。我正在使用HttpTestingController和ExpectOne函数,可以这样做吗?

1 个答案:

答案 0 :(得分:1)

这是您想要做的事情吗?

设置

array([u'EUR3m', u'EUR3m3m', u'EUR6m3m', u'EUR9m3m', u'EUR1y', u'EUR1y1y',
       u'EUR2y1y'], dtype=object)

测试

let httpClient: HttpClient;
let httpTestingController: HttpTestingController;

beforeEach(() => {
  TestBed.configureTestingModule({
    imports: [ HttpClientTestingModule ]
  });

  httpClient = TestBed.get(HttpClient);
  httpTestingController = TestBed.get(HttpTestingController);
});

这是Angular文档中的示例,除了您将函数传递给it('can test HttpClient.get', () => { const testData: Data = {name: 'Test Data'}; httpClient.get<Data>('http://localhost:8085/test/suite') .subscribe(data => expect(data).toEqual(testData) ); const request = httpTestingController.expectOne( (req: HttpRequest<any>) => req.url.includes('http://localhost:8085')); request.flush(testData); httpTestingController.verify(); }); 之外,该函数接受一个req并返回一个布尔值,该布尔值检查请求的URL是否包含正确的端点。

当然,您将用服务替换掉HttpClient。