reactjs - 如何用 enzyme 测试recompose的withHandlers、branch和withState中的处理程序?

标签 reactjs jestjs enzyme recompose

我是 enzyme 测试的新手,我制作了一个组件:

import React from 'react';
import {
  compose,
  withState,
  withHandlers,
  branch,
  pure,
  renderComponent,
} from 'recompose';

import Fields from './components/Fields';
import Flow from './components/Flow';

export const MODE = {
  preview: 'preview',
  edit: 'edit',
};

const inEditMode = ({ mode }) => mode === MODE.edit;

const Component = branch(
  inEditMode,
  renderComponent(Fields),
  renderComponent(Flow),
)(Flow);

const Tab = pure(props => <Component {...props} />);

export default compose(
  withState('mode', 'changeMode', props => {
    const path = props.path;

    return props.path ? MODE.preview : MODE.edit;
  }),
  withHandlers({
    changeMode: ({ changeMode }) => () => changeMode(currentState => currentState === MODE.preview ? MODE.edit : MODE.preview),
    onApprovalChange: ({ onAction, entity }) => data => {
      onAction({ ...data, status: 'UPDATED' }, data.id);
    },
  }),
)(Tab);

在上面的组件中,我想测试以下内容:

  1. 组件的渲染

  2. 组件的inEditMode函数

  3. 处理程序存在于 withStatewithHandlers

  4. branch 重组实用程序(我真的认为我不需要检查这个,因为他们可能已经检查过,但假设我想测试这样的功能)

    <

我可以在 stackoverflow 上找到一些有关测试的文档,但没有一种资源可以提供总体思路。

最佳答案

在测试组件时,您应该仅测试组件,而不是容器(包装它的函数),因为它们是高阶组件

如果您想测试 recompose 中的函数,请查看他们自己的测试:https://github.com/acdlite/recompose/blob/master/src/packages/recompose/tests/withState-test.js 并在此基础上编写您自己的内容。

对于您的组件,请确保导出各个部件并对其进行测试。在您的场景中将是功能组件inEditMode:

export const inEditMode = ({ mode }) => mode === MODE.edit;

这就是您在此组件上测试所需的全部内容。

关于reactjs - 如何用 enzyme 测试recompose的withHandlers、branch和withState中的处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46071341/

相关文章:

javascript - 主干调用在 React 组件函数中不起作用

javascript - 如何更改在 React 中动态创建的 div 中的值

reactjs - 如何使用 Jest 在 React 中单元测试 switch case?

reactjs - 如何测试一个组件是否被 jest 和 enzyme 渲染?

reactjs - 为什么 Flow 将我的 React 组件报告为 `incompatible with string` ?

reactjs - Material UI 的 GridToolbarExport 在上一版本后停止工作? 5.0.0-alpha.37

javascript - Jest|Enzyme 如何期望输入中默认值上的任何字符串

javascript - 如何在整个文档页面上测试弹出窗口的 onKeyDown 事件?

javascript - Enzyme - 在作为 prop 传递的元素中触发事件

javascript - 为什么 enzyme 无法测试 react Highcharts ?