Дождитесь, пока все обещания закончатся

#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 ? Я предположил, что вы говорили о вещах, происходящих внутри компонентов, которые они не раскрывали.