我如何使用 Nock 在测试期间禁用所有外部 API 请求?

How do I use Nock to disable all external API requests during testing?

我正在测试向多个 API 发出外部请求的代码库。我如何确保在测试期间永远不会向这些 API 之一发出请求?我已经计划使用 Nock 来模拟响应,但我担心我会忘记模拟响应并且请求将进入实时 API。

Nock includes a feature专门用于此目的。要将它与 Jest 一起使用,首先确保您已将 Jest 配置为使用设置文件。您可以通过向 package.json 添加以下内容来执行此操作:

"jest": {
  "setupFiles": ["./jest.setup.js"]
},

然后将以下代码添加到新的安装文件中:

import * as nock from 'nock';
nock.disableNetConnect();

从现在开始,在测试 运行 期间发送的任何未模拟的网络请求都将失败,并出现类似于以下的错误:

FetchError: request to https://my-api.io/endpoint failed, reason: Nock: Disallowed net connect for "my-api.io/endpoint"