Одной из причин, по которой прямой доступ к DOM не рекомендуется в React, является то, что это делает тестирование более сложным и непредсказуемым.
DOM может быть полностью смоделирован перед монтированием компонента:
const elementMock = { addEventListener: jest.fn() };
jest.spyOn(document, 'getElementById').mockImplementation(() => elementMock);
AЗаглушка может быть проверена, что она была вызвана правильно:
expect(elementMock.addEventListener).toBeCalledWith('transitionend', expect.any(Function), false);
И слушатель события может быть проверен, что он изменяет состояние, как ожидалось:
const handler = elementMock.mock.calls[0][1];
handler();
...