【问题标题】:jest - Connected component not generated in snapshot when nested in React SFC component?jest - 嵌套在 React SFC 组件中时未在快照中生成连接的组件?
【发布时间】:2019-09-08 02:36:26
【问题描述】:

我有一个 SFC 组件。最近我有一个功能要添加,最简单的方法就是将我的连接组件嵌套在这个 SFC(无状态功能组件)组件中。

我可以让应用正常运行,但快照测试失败,因为快照中没有生成连接的组件。

日志:

- Snapshot
+ Received
@@ -95,10 +95,12 @@
         >
+
+          <Connect(SomeComponent) />
         </NavLink>
       </div>
     </li>
   </ol>
 </div>

一些组件:

class SomeComponent extends React.Component<IStateProps> {
  public render() {// render code}

function mapStateToProps(state: IRootState): IStateProps {
  return {// code}

export default connect<IStateProps>(mapStateToProps)(SomeComponent);

我对 React 还是很陌生。我不确定在 SFC 中嵌套有状态组件是否有意义,但这样做确实有效。只是测试失败了。

所以我的问题是

  • 在 SFC 组件中嵌套有状态组件是否是一种好习惯?如果没有,应该有什么更好的方法?

  • 如果这样可以的话,怎么做快照测试?

【问题讨论】:

  • 你使用shallow(),不是吗?
  • @skyboyer 我正在使用ShallowRenderer
  • 意料之中,shallow rendering works 就是这样。所以要么使用完整的渲染,要么处理它(并单独测试你的组件)。我相信以后的选择会更好。

标签: reactjs react-redux jestjs


【解决方案1】:

由于您将组件包装在 connect 中,因此它就像一个开玩笑的新组件。你需要更新你的快照。

【讨论】:

  • 我更新了快照,但组件没有出现。
  • 您的意思是在快照中看不到您的SomeComponent?上面的快照是针对SomeComponent 的父组件的。您可能想要捕获单独的快照作为SomeComponent 的测试。
  • 是的,我没有看到任何与 SomeComponent 相关的内容。所以我只导出了连接的组件,没有导出底层的展示组件。测试失败,因为快照不包含“&lt;Connect(SomeComponent) /&gt;”,但接收到的值包含。我不知道为什么快照既不包含连接的组件,也不包含像&lt;SomeComponent&gt; 这样的东西。快照不应该反映代码更改吗?如果快照更新后没有该元素,那是否意味着该元素丢失了?
猜你喜欢
  • 2017-05-21
  • 1970-01-01
  • 1970-01-01
  • 2017-02-23
  • 2019-02-15
  • 1970-01-01
  • 2018-05-29
  • 2018-07-16
  • 1970-01-01
相关资源
最近更新 更多