Ошибка означает, что исключений не было, пока они ожидались.async
функции являются синтаксическим сахаром для обещаний.Они никогда не генерируют исключения, но могут возвращать отклоненное обещание.
Поскольку ожидается, что утверждение будет синхронным, утверждать обещания таким способом невозможно;весь стек вызовов должен быть основан на обещаниях.
Как было упомянуто в комментариях, assert.rejects
появился в узле 10 и приводит к отклонению обещания при ошибке подтверждения.
В случае, если обещания обрабатываютсявызывающий объект (например, в большинстве сред тестирования), отклоненное обещание должно быть возвращено из текущей функции:
it('...', async () {
await assert.rejects((async () => {})()); // current function returns rejected promise
});
Если обещания подтверждения не обрабатываются (например, в производстве), они приводят к консоли UnhandledPromiseRejectionWarning
вывод, а не в исключениях.Обработчик unhandledRejection
может быть настроен на обработку асинхронных ошибок:
process.on('unhandledRejection', err => {
console.error(err);
process.exit(1);
});
...
assert.rejects((async () => {})());