【问题标题】:Error while testing React component using Jasmine使用 Jasmine 测试 React 组件时出错
【发布时间】:2016-06-14 01:11:47
【问题描述】:

我在测试一个反应组件时不断收到这个错误:

错误:不变违规:findComponentRoot(..., .0): 无法找到 元素。这可能意味着 DOM 发生了意外突变(例如, 由浏览器),通常是由于在使用时忘记了

表格、嵌套标签,如

,或使用非 SVG 父元素中的元素。尝试检查子节点 具有 React 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);

   });

});

【问题讨论】:

  • 您能否提供有关您引用的instance 变量的更多信息?是调用instance.flattenData还是创建组件实例时出现错误?
  • 我找到了解决方法,我没有错误地提供更多关于实例的数据,并且在这种情况下 instance.flattenData 不相关。还是谢谢。

标签: unit-testing reactjs jasmine karma-jasmine


【解决方案1】:

我通过向渲染调用添加参数来修复此错误。这会强制组件(它只是一个 <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`);

【讨论】:

    猜你喜欢
    • 2016-04-21
    • 2018-01-09
    • 2017-08-04
    • 2021-11-30
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    相关资源
    最近更新 更多