为什么 Jest 在我使用 jest.setTimeout() 时不应用我的超时?

Why isn't Jest applying my timeout when I use jest.setTimeout()?

我知道我可以 use jest.setTimeout() to set a custom timeout for a test。我在下面做这个。 MINUTE 的值为 60 * 1000

为什么 Jest 不应用我的超时?

    thrown: "Exceeded timeout of 5000 ms for a test.
    Use jest.setTimeout(newTimeout) to increase the timeout value, if this is a long-running test."

      13 |
      14 | describe(`integration with API provider`, () => {
    > 15 |   it(`works`, async () => {
         |   ^
      16 |     // Just in case network is slow.
      17 |     jest.setTimeout(1 * MINUTE);

如您所见(尽管在 SO 的其他地方有声明),您 不能 通过从内部调用 jest.setTimeout 来更改单个测试的超时。请注意,您引用的文档状态(强调我的):

This only affects the test file from which this function is called.

它旨在用于测试 发现 时间,而不是 执行 时间,以设置给定上下文的超时。超时时间是在调用测试回调之前设置的,一旦测试真正开始就无法更改它。

对于单个测试,您可以通过将第三个参数传递给 the test/it function(或在其上定义的各种助手)来设置超时,例如:

it("has a description", () => {
  // ...
}, 60_000);