Jest - 如何找到带有id的渲染DOM组件?

时间:2015-06-23 10:14:51

标签: reactjs jestjs

我正在编写一个简单的Jest测试,用于验证我的组件是否已呈现。我看到React的TestUtils具有按类或按标签查找渲染组件的功能,但不包括其ID属性。有一个findAllInRenderedTree函数,但文档没有解释回调应该是什么。

我猜测回调会收到某种元素对象,这不是普通的DOM元素或普通的React组件。究竟是什么传递给console.log的回调,以及我应该如何获得其属性,或者至少是它的ID?

我只会 // EXT:news start 'news' => array( array( 'GETvar' => 'tx_news_pi1[action]', ), array( 'GETvar' => 'tx_news_pi1[controller]', ), array( 'GETvar' => 'tx_news_pi1[news]', 'lookUpTable' => array( 'table' => 'tx_news_domain_model_news', 'id_field' => 'uid', 'alias_field' => 'title', 'addWhereClause' => ' AND NOT deleted', 'useUniqueCache' => 1, 'useUniqueCache_conf' => array( 'strtolower' => 1, 'spaceCharacter' => '-', ), 'languageGetVar' => 'L', 'languageExceptionUids' => '', 'languageField' => 'sys_language_uid', 'transOrigPointerField' => 'l10n_parent', 'autoUpdate' => 1, 'expireDays' => 180, ), ), ), // EXT:news end 回调的参数,但我很难让控制台在Jest测试中工作。

1 个答案:

答案 0 :(得分:8)

findAllInRenderedTree的回调参数传递给组件实例,并且应该返回一个布尔值,指示组件是否应该保存在输出数组中。

在您的情况下,查找具有给定id的所有呈现的DOM组件:

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

如果需要测试实际DOM节点的属性,可以使用React.findDOMNode(inst)检索给定组件实例的DOM节点。