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

问题描述 投票:0回答:2

我简单地尝试在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()
})
jestjs react-test-renderer
2个回答
0
投票

这是预料之中的。

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

它不是您从浏览器检查中看到的DOM树,而是表示类似的javascript对象。


0
投票

我忽略了发布原始帖子时使用的版本。这个问题已得到修复,但目前还不清楚确切的版本。

© www.soinside.com 2019 - 2024. All rights reserved.