我在测试反应组件时一直遇到此错误:
错误:不变违规:findComponentRoot(...,。0):无法找到 元件。这可能意味着DOM意外地发生了变异(例如, 通过浏览器),通常是因为忘记了< tbody>使用时 表格,嵌套标签,如< form>,< p>或< a>,或使用非SVG < svg>中的元素家长。尝试检查。的子节点 具有反应ID的元素``。
我以前用来测试的代码:
describe(`Method: flattenData`, () => {
const tests = [
{
toFlatten: {
'key1': 'k',
'key2': 'n',
'key3': 'o'
},
expectedResult: 'key1: k; key2: n; key3: o'
}
];
tests.forEach((test) => {
expect(instance.flattenData(test.toFlatten)).toEqual(test.expectedResult);
});
});
答案 0 :(得分:0)
我通过向渲染调用添加参数来修复此错误。这会强制组件(只是<td> </td>
在表格内呈现。
在:
[container, instance] = render(TableCell, {
data: `content`,
dataTh: `content`,
key: `content`,
dataLocator: `content`
});
使用修复:
[container, instance] = render(TableCell, {
data: `content`,
dataTh: `content`,
key: `content`,
dataLocator: `content`
}, `table`);