jest/prefer-expect-resolves 樣式
作用
當處理 Promise 時,主要有兩種方式可以測試已解析的值
- 在
expect
上使用resolve
修飾符 (await expect(...).resolves.<matcher>
樣式) 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);
});