使用Jasmine测试React组件时出错

时间:2016-03-01 14:46:22

标签: unit-testing reactjs jasmine karma-jasmine

我在测试反应组件时一直遇到此错误:

  

错误:不变违规: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);

   });

});

1 个答案:

答案 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`);