angular - HttpTestingController ExpectOne 仅验证 api 端点

标签 angular typescript unit-testing

我只想测试请求是否发送到正确的 api 端点。例如:我有一个服务将请求发送到 http://localhost:port/sth/sth2我只想检查是否有 http://localhost:port 。我正在使用 HttpTestingController 和 ExpectOne 函数,可以吗?

最佳答案

这是您想要做的事情吗?

设置

let httpClient: HttpClient;
let httpTestingController: HttpTestingController;

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

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

测试

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();
});

这是 Angular 文档中的示例,只不过您将一个函数传递给 expectOne,该函数接受一个 req 并返回一个 bool 值,用于检查请求的 url 是否包含正确的端点。

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

关于angular - HttpTestingController ExpectOne 仅验证 api 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52312409/

相关文章:

angular - 使用 Angular cli 禁用 watch node_modules

angular - mat-tab-group 不是 Angular 9 中的已知元素

typescript - 添加强类型事件的定义

typescript - 向 session 对象添加附加属性

javascript - 如何在 TypeScript 中制作时钟?

javascript - 谷歌 protobuf-js : How to parse efficiently my messages

javascript - 语法错误: Unexpected token in Angular

Android:测试用例有没有命名规则

unit-testing - 如何从 View 中删除 "@oidc.login_required"以进行单元测试?

unit-testing - tox --parallel 命令的 <value> 是什么?