Jest - 如何找到带有 id 的渲染 DOM 组件?
Jest - How to find rendered DOM component with id?
我正在编写一个简单的 Jest 测试来验证我的组件是否已呈现。我看到 React 的 TestUtils 具有通过 class 或标签而不是 ID 属性查找渲染组件的功能。有一个 findAllInRenderedTree
函数,但文档没有解释回调应该期待什么。
我猜回调会收到某种元素对象,它不是普通的 DOM 元素或普通的 React 组件。传递给 findAllInRenderedTree
的回调的到底是什么,我应该如何获取它的属性,或者至少是它的 ID?
我只想 console.log
回调的参数,但我很难让控制台在 Jest 测试中工作。
findAllInRenderedTree
的回调参数传递了一个组件实例,并且应该 return 一个布尔值,指示该组件是否应该保留在输出数组中。
在您的情况下,要查找所有呈现的具有给定 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 节点。
我正在编写一个简单的 Jest 测试来验证我的组件是否已呈现。我看到 React 的 TestUtils 具有通过 class 或标签而不是 ID 属性查找渲染组件的功能。有一个 findAllInRenderedTree
函数,但文档没有解释回调应该期待什么。
我猜回调会收到某种元素对象,它不是普通的 DOM 元素或普通的 React 组件。传递给 findAllInRenderedTree
的回调的到底是什么,我应该如何获取它的属性,或者至少是它的 ID?
我只想 console.log
回调的参数,但我很难让控制台在 Jest 测试中工作。
findAllInRenderedTree
的回调参数传递了一个组件实例,并且应该 return 一个布尔值,指示该组件是否应该保留在输出数组中。
在您的情况下,要查找所有呈现的具有给定 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 节点。