繁体   English   中英

如何用withHandlers,branch和withState重组酶来测试处理程序?

[英]How to test the handlers in withHandlers, branch and withState of recompose with 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. Component的渲染

  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;

这就是测试这个组件所需的全部内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM