Я работаю над добавлением тестового покрытия в проект Node, над которым я работаю, используя Jest. Код, который я тестирую, выдает ошибки в обещаниях, в результате чего сообщение UnhandledPromiseRejectionWarning
регистрируется на консоли.
Во время написания тестов я довольно легко могу определить эти проблемы и решить их, но эти предупреждения на самом деле не заставляют Jest пометить тесты как неудачные, поэтому наш CI не поймает их. Я искал какие-либо предложения и не нашел много.
В документации по Node я обнаружил, что вы можете перехватить эти предупреждения и обработать их ...
process.on('unhandledRejection', (error) => {
throw error; // Or whatever you like...
});
Так что, кажется, было бы довольно просто добавить этот код в мои тестовые случаи. В конце концов, Error
, брошенный в тесте , должен привести к сбою теста ...
describe('...', () => {
it('...', () => {
process.on('uncaughtRejection', (error) => {
throw error;
});
// the rest of my test goes here
});
});
К сожалению, поведение, которое я вижу, состоит в том, что ошибка вызывает , но Jest не ловит ее и не проходит тест. Вместо этого Jest вылетает с этой ошибкой, и тесты не продолжают выполняться. Это не очень желательно, и похоже на неправильное поведение.
Выдача ошибки за пределы обработчика uncaughtRejection
работает, как и ожидалось: Jest регистрирует выданную ошибку и не проходит тест, но не вылетает. (т. е. наблюдатель продолжает наблюдать и запускать тесты)