使用react-test-renderer的Jest测试是将未定义的属性值插入DOM

时间:2018-04-11 16:15:58

标签: jestjs react-test-renderer

我曾试着在react-test-renderer源代码中找到它,但无法找到它。

回想一下,在React中,值为undefined的组件元素属性不会在DOM中呈现。即,在bat = undefined<Foo bar={bat} />的情况下,bar属性不会出现在生成的HTML中。

我假设它的预期行为,但我很困惑为什么,当Jest快照中的JSON树中出现可选组件属性时 - 除非快照只是确认该属性未指定(ws-automation-id是一个可选的组件属性,没有定义defaultProps条目):

exports[`the <TextButton/> component should use the specified class names 1`] = `
<button
  className="gc-icon test-class1 test-class2"
  onClick={[Function]}
  ws-automation-id={undefined}
>
  Button Text
</button>
`;

鉴于

test('should use the specified class names', () => {
  const tree = create(<TextButton buttonText="Button Text" onClick={null} classNames={['test-class1', 'test-class2']} />).toJSON()
  expect(tree).toMatchSnapshot()
})

2 个答案:

答案 0 :(得分:0)

这是预期的。

  

从本质上讲,此软件包可以轻松获取由React DOM或React Native组件呈现的平台视图层次结构(类似于DOM树)的快照,而无需使用浏览器-React Test Renderer

这不完全是您从浏览器中看到的DOM树,而是代表类似内容的javascript对象。

答案 1 :(得分:0)

我忽略发布原始发布时正在使用的版本。此问题已修复,但是尚不清楚确切的版本。