【问题标题】:Testing Node.js API with Jest用 Jest 测试 Node.js API
【发布时间】:2021-11-02 22:06:27
【问题描述】:

我需要为我的 Node.js API 实施单元测试。在 API 中,我只使用普通的 Node.js。测试框架是 Jest。我目前有测试,但它们都要求在运行测试之前启动服务器(为此我使用 supertest)。

所以问题是如何在不实际运行服务器的情况下测试 API 端点?

【问题讨论】:

  • 服务器宕机时无法进行测试,因此可以使用 ENV 变量定义测试端口并运行服务器的测试实例并进行单元测试
  • @mohammadNaimi 是的,谢谢。我想这是唯一的方法

标签: javascript node.js unit-testing testing jestjs


【解决方案1】:

所以问题是如何在不实际运行服务器的情况下测试 API 端点?

我会使用nock。它是一个用于 Node.js 的 HTTP 服务器模拟库。

Nock 可用于测试单独执行 HTTP 请求的模块。

请参阅usage 文档。

const nock = require('nock')

const scope = nock('https://api.github.com')
  .get('/repos/atom/atom/license')
  .reply(200, {
    license: {
      key: 'mit',
      name: 'MIT License',
      spdx_id: 'MIT',
      url: 'https://api.github.com/licenses/mit',
      node_id: 'MDc6TGljZW5zZTEz',
    },
  })

基本上,您为给定的 URL 创建一个模拟范围,然后任何向模拟范围发出 HTTP 请求的测试都将被nock 拦截。

您可能希望在 beforeAllbeforeEach Jest 块中设置您的模拟范围。

【讨论】:

  • 感谢您的回答。会调查那个诺克
猜你喜欢
  • 2017-01-24
  • 2015-09-20
  • 1970-01-01
  • 1970-01-01
  • 2020-12-10
  • 2020-09-25
  • 2021-02-03
  • 2018-09-30
  • 2020-12-17
相关资源
最近更新 更多