跳至内容

jest/prefer-expect-resolves Style

🛠️ 此规则提供自动修复。

作用

在使用 Promise 时,有两种主要方法可以测试已解析的值

  1. expect 使用 resolve 修饰符(await expect(...).resolves.<matcher> 样式)
  2. await Promise 并针对其结果进行断言(expect(await ...).<matcher> 样式)

虽然第二种样式可以说不太依赖于 jest,但如果 Promise 被拒绝,它将被视为一般错误,导致 jest 产生可预测性更低的行为和输出。

此外,采用第一种样式与它的 rejects 对应样式确保一致性,因为没有办法“await”拒绝。

示例

javascript
// valid
it("passes", async () => {
  await expect(someValue()).resolves.toBe(true);
});
it("is true", async () => {
  const myPromise = Promise.resolve(true);

  await expect(myPromise).resolves.toBe(true);
});

it("errors", async () => {
  await expect(Promise.reject(new Error("oh noes!"))).rejects.toThrowError("oh noes!");
});

// invalid
it("passes", async () => {
  expect(await someValue()).toBe(true);
});
it("is true", async () => {
  const myPromise = Promise.resolve(true);
  expect(await myPromise).toBe(true);
});

参考

以 MIT 许可证发布。