我正在编写一个简单的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测试中工作。
答案 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节点。