跳到內容

jest/prefer-expect-resolves 樣式

🛠️ 此規則有自動修正功能。

作用

當處理 Promise 時,主要有兩種方式可以測試已解析的值

  1. expect 上使用 resolve 修飾符 (await expect(...).resolves.<matcher> 樣式)
  2. await Promise 並針對其結果進行斷言 (expect(await ...).<matcher> 樣式)

雖然第二種樣式可以說較不依賴 jest,但如果 Promise 被拒絕,它將被視為一般錯誤,導致 jest 的行為和輸出較難以預測。

此外,偏好第一種樣式可以確保與其 rejects 對應項的一致性,因為沒有「等待」拒絕的方法。

範例

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 授權條款發布。