#reactjs #react-testing-library
Вопрос:
Я пытаюсь протестировать простое приложение, чтобы освоиться с библиотекой тестирования реакций, и мне удалось многое выяснить, но я получаю сообщение об ошибке, связанное с обновлениями состояния реакции на размонтированных компонентах. Это отображается только в моем наборе тестов, а не когда я запускаю приложение, и я попытался установить переменную isMounted и установить для нее значение false в функции очистки. Однако ошибка все еще сохраняется. Если у кого-нибудь есть представление о том, что я делаю не так, я был бы очень признателен за помощь!
Соответствующий код:
Упражняемый.jsx
useEffect(async () =gt; { let isMounted = true; const exercisesArray = await exerciseAPI.get(); if (isMounted) { setExercises(exercisesArray); } return () =gt; { isMounted = false; }; }, []);
ExerciseTable.test.js настройка сервера
const server = setupServer( rest.get('/exercises', (req, res, ctx) =gt; { return res(ctx.json(exercises)); }), rest.get('/exercises/:id', (req, res, ctx) =gt; { const id = req.params.id; const exercise = exercises.find(e =gt; e._id === id); return res(ctx.json(exercise)); }), );
annnnd тест выдает ошибку в том же файле
it('Renders a list of exercises', async () =gt; { render(lt;ExerciseTable /gt;); const row1 = await screen.findByRole('row', { name: new RegExp(`${exercises[0].username}`, 'i'), }); const row2 = await screen.findByRole('row', { name: new RegExp(`${exercises[1].username}`, 'i'), }); const row3 = await screen.findByRole('row', { name: new RegExp(`${exercises[2].username}`, 'i'), }); expect(row1).toBeInTheDocument(); expect(row2).toBeInTheDocument(); expect(row3).toBeInTheDocument(); });
Большое спасибо!