我有這個函式回傳一個承諾并在被呼叫時失敗:
export const mockAsync = () => {
return new Promise((_, reject) => {
setTimeout(() => reject(new Error('Error')), 50);
});
};
我有這個測驗,它正在通過:
describe('mockAsync', () => {
test('it should throw if we ask for it', async () => {
const result = mockAsync();
await expect(result).rejects.toThrow('Error');
});
});
但我覺得很奇怪,我希望它await在函式呼叫之前呼叫:
describe('mockAsync', () => {
test('it should throw if we ask for it', async () => {
const result = await mockAsync();
expect(result).rejects.toThrow('Error');
});
});
最后一個沒有通過,我不明白為什么。是不是語法正確?
uj5u.com熱心網友回復:
對于測驗,您希望在期望的背景關系中拒絕承諾。出于這個原因,我們通常這樣寫:
await expect(/*sync function call*/).rejects.toThrow('someError')
在您的特定示例中:
describe('mockAsync', () => {
test('it should throw if we ask for it', async () => {
await expect(mockAsync()).rejects.toThrow('Error')
})
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/411801.html
標籤:
上一篇:如何在Java中捕獲保存的價值?
下一篇:如何用玩笑測驗這個反應組件?
