作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 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);
在上面的组件中,我想测试以下内容:
组件的渲染
组件的inEditMode
函数
处理程序存在于 withState
和 withHandlers
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/
我有一个高阶组件,我尝试稍微修改一下(我不熟悉重组)。 这就是我的组件: 如果 mycenter 更新,我希望 map 组件更新或重新呈现。我正在尝试修改代码 https://github.com/
我是一名优秀的程序员,十分优秀!