Jest - Как найти визуализированный компонент DOM с идентификатором?

Я пишу простой тест Jest, который проверяет, что мой компонент отображается. Я вижу, что TestUtils React имеет функции для поиска отображаемых компонентов по классу или по тегу, но не по их атрибуту ID. Существует функция findAllInRenderedTree, но в документации не объясняется, что должен ожидать обратный вызов.

Я предполагаю, что обратный вызов получит какой-то объект элемента, который не является обычным элементом DOM или обычным компонентом React. Что именно передается обратному вызову findAllInRenderedTree и как я должен получить его атрибуты или, по крайней мере, его идентификатор?

Я бы просто console.log аргументы обратного вызова, но мне трудно заставить консоль работать в тесте Jest.


person Dan Ross    schedule 23.06.2015    source источник


Ответы (1)


Аргумент обратного вызова findAllInRenderedTree получает экземпляр компонента и должен возвращать логическое значение, указывающее, следует ли оставить компонент в выходном массиве.

В вашем случае, чтобы найти все отображаемые компоненты DOM с заданным идентификатором:

function scryRenderedDOMComponentsWithId(tree, id) {
  return TestUtils.findAllInRenderedTree(tree, function(inst) {
    return TestUtils.isDOMComponent(inst) && inst.getAttribute("id") === id;
  });
}

Если вам нужно проверить атрибуты фактического узла DOM, вы можете использовать React.findDOMNode(inst) для получения узла DOM данного экземпляра компонента.

person Alexandre Kirszenberg    schedule 23.06.2015
comment
Читая это: stackoverflow.com/questions/32246645/, способ сделать это с этого момента должен быть: return isDOMComponent(inst) && inst.getAttribute('id') === id; - person Alfonso Pérez; 12.10.2015