Angular 单元测试 : Testing http with real APIs

标签 angular api unit-testing testing karma-jasmine

我正在使用 karma 在 Angular CLI 中编写单元测试。我想用真正的 API 测试 http 调用,而不是使用模拟。因为 API 模型经常变化,我正在寻找一种方法来确定我的端点响应。有解决方案或示例代码吗?

这是我想用真实 API 测试的服务:

  getCodeRequest(phone: string) {

    let params = new HttpParams();
    params = params.append('phone', String(phone));

    return this.http.get('/auth/request', { params });
  }

我将不胜感激。

最佳答案

你所描述的不是单元测试,在这种实现方法中应该避免。相反,您应该将其拆分为单独的单元测试和 e2e 测试。为您的 BE 进行一个单元测试,检查在给定预期输入的情况下,它是否返回预期输出。第二个测试应该检查您的 FE - 使用模拟 - 以确保使用正确的参数发送请求。如果你真的需要检查 api 的通过 - 你需要一个 e2e 测试。具体如何实现取决于您的后端环境。

因此,总而言之,不要试图在单个单元测试中测试整个 API 调用。相反,

  1. 在 BE 上进行单元测试以测试 BE 端的行为
  2. 在您的 Angular 项目中进行单元测试(使用模拟)以测试您的前端
  3. 如果您仍然需要,请进行端到端测试以测试端到端的内容,例如正确的 API。

祝你好运!

编辑

此外,作为旁注 - 您的 API 模型不应不断变化。这是一种不好的做法,会给事情留下空间。您/您的团队应该坐下来定义一个双方都坚持的清晰 API。

祝你好运!

关于 Angular 单元测试 : Testing http with real APIs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65493051/

相关文章:

angular - 如何在单击图标/按钮时从表中删除单行

javascript - Angular : No Error but not showing data in Material Table

c++ - C++单元测试框架比较

java - Spring REST API 服务单元测试(更新(PUT 方法))

php - 如何使用 Laravel 测试授权重定向?

javascript - Angular2 模板应用程序

angular - 在 angular2 中,我有一个用于两个组件的管道,我想知道如何在全局范围内共享它

java VirtualMachine.getSystemProperties() 死锁

c# - MVC Controller 将整个模型发布到远程 api 操作

api - 未配置 Google Calendar API v3 访问