#node.js #reactjs #jestjs #react-testing-library
Вопрос:
При написании интеграционных тестов мне нужно убедиться, что все обещания выполнены, прежде чем переходить к следующему тесту. Я не могу знать, что это за обещания и сколько их там.
Я пытался:
const flushPromises = () => new Promise(setImmediate);
await flushPromises();
Это не работает.
Моя версия шутки , версия 24.9.0
узла , версия 12.18.0
реакции 16.13.1
, версия библиотеки тестирования реакции 12.0.0
Комментарии:
1. Есть ли какой-либо видимый пользователю результат после того, как все обещания будут выполнены? Как правило, с RTL вы бы сделали что — то вроде
await waitFor(() => expect(getBySomething(...)).toBeInTheDocument())
— testing-library.com/docs/dom-testing-library/api-async .2. @jonrsharpe иногда нет видимых результатов. Например, при извлечении пустых данных из серверной части.
3. В таких случаях имеет ли значение, будет ли это решено или нет? Показываете ли вы какое-либо состояние «загрузки»? Чего вы ждете, чтобы сделать после того, как все будет решено?
4. @jonrsharpe Я вызываю api для очистки бд после каждого теста. Таким образом, выборка будет вызвана после очистки бд, что приведет к ошибкам, если я не дождусь ее завершения перед очисткой бд
5. Почему это то, где вы не справляетесь с обещаниями просто
await
? Я предположил, что вы говорили о вещах, происходящих внутри компонентов, которые они не раскрывали.