У меня есть компонент React, который позволяет пользователям отправлять потенциально длительные запросы в удаленную службу. Во время выполнения запроса на компоненте отображается кнопка отмены. Я хочу проверить, появляется ли эта кнопка, когда ожидалось, что ее обработчик кликов отменяет предыдущий запрос API и так далее.
Поскольку кнопка присутствует только тогда, когда активен вызов асинхронного API, тесты, которые я написал для этой цели, делают свои утверждения о кнопке в макетной реализации самого асинхронного API. Они не очень элегантны, но я подтвердил, что они действительно становятся красными, как я ожидал, когда я удаляю части производственного кода.
При обновлении @test-library / react с 8.0.1 до 9.3.2, хотя тесты все еще проходят, я теперь несколько раз получаю следующее предупреждение:
console.error node_modules/@testing-library/react/dist/act-compat.js:52
Warning: You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one.
Я воспроизвел проблему в следующем CodeSandbox (обязательно выберите вкладку «Тесты» справа, а затем просмотрите сообщения «Консоль» в правом нижнем углу).
В последнем комментарии к этой проблеме GitHub говорится, что я не должен: Мне не нужно беспокоиться о act()
, если я использую помощники и функции библиотеки тестирования React (каковыми я и являюсь). Что мне не хватает?