Я пытаюсь утверждать, что обещание выдает ошибку с помощью Async/Await.
async function throws () {
throw new Error('hello world')
}
test('promise throws', async () => {
expect(async () => {
await throws()
}).toThrow()
})
Вот что я получаю:
● promise throws
expect(function).toThrow(undefined)
Expected the function to throw an error.
But it didn't throw anything.
Есть предположения? Разве Jest не поддерживает это? Или я неправильно его использую?
Однако это проходит:
async function throws () {
throw new Error('hello world')
}
test('promise throws', async () => {
let message = false
try {
await throws()
} catch (e) {
message = e.message
}
expect(message).toBeTruthy()
})
Кандидат на базовую функциональность.
Какие?
async function throws () {
throw new Error('hello world')
}
test('promise throws', async () => {
await expect(throws()).rejects.toThrow()
})
Это решено, пожалуйста, прочитайте документы, прежде чем комментировать старые проблемы. https://jestjs.io/docs/en/asynchronous#resolves -отклоняет
Какие?
async function throws () { throw new Error('hello world') } test('promise throws', async () => { await expect(throws()).rejects.toThrow() })
Это решено, пожалуйста, прочитайте документы, прежде чем комментировать старые проблемы. https://jestjs.io/docs/en/asynchronous#resolves -отклоняет
Важным моментом в решении является await
expect
. В противном случае ваши проверки всегда будут проходить.
В качестве альтернативы вы также можете вернуть ожидание, как это делается в документах.
Самый полезный комментарий
Какие?
Это решено, пожалуйста, прочитайте документы, прежде чем комментировать старые проблемы. https://jestjs.io/docs/en/asynchronous#resolves -отклоняет