reactjs - 道具没有传递给测试用例
问题描述
我有一个简单的组件,但无法为我的测试用例传递道具,如果没有 - withRouter,它工作得很好。可能是什么原因
零件
const Plugins = ({pluginsData, history}) => {
return (
<ul className="plugin-list">
<li
appearance="subtle"
weight="medium"
className="item"
onClick={() => history.push(`/list/plugins`)}>Plugins</li>
{ pluginsData.length
? pluginsData.map((item, index) => <li className="up-coming-text" key={index}>{item.plugin}</li>)
: " No Data" }
</ul>
)
}
使用Router(插件)导出默认值
plugin.test.js
const pluginsData= [
{
"plugin": "Apps (Coming soon)"
}
]
const wrapper = shallow(<Plugins pluginsData={pluginsData}/>);
describe('test home page', () => {
it('should render home page successfully', () => {
expect(wrapper).toMatchSnapshot();
});
it('renders correct text in item', () => {
expect(wrapper.find('.up-coming-text').get(0).props.children).toEqual('Apps (Coming soon)');
});
it('renders pluginsData length', () => {
expect(wrapper.find('.up-coming-text')).toBeDefined();
expect(wrapper.find('.up-coming-text').length).toEqual(pluginsData.length);
});
});
错误
ΓùÅ 测试主页 ΓÇ║ 渲染插件数据长度
expect(received).toEqual(expected) // deep equality
Expected: 1
Received: 0
28 | it('renders pluginsData length', () => {
29 | expect(wrapper.find('.up-coming-text')).toBeDefined();
> 30 | expect(wrapper.find('.up-coming-text').length).toEqual(pluginsData.length);
| ^
31 | });
32 |
33 | });
at Object.<anonymous> (ui/src/routes/Explorer/Plugins/plugins.test.js:30:56)
解决方案
您可以使用Component.WrappedComponent 单独测试组件。
从文档中,
包装的组件作为返回组件上的静态属性公开
WrappedComponent
,除其他外,可用于单独测试组件。
shallow(<Plugins.WrappedComponent pluginsData={pluginsData}/>)
推荐阅读
- java - 我可以将yaml或json文件放在open api中springboot应用程序的config文件夹中吗?如果可能的话,我该怎么做?
- python-3.x - 如何编写代码以避免'tensorflow'没有属性'Session'和'global_variables_initializer'的错误
- javascript - 做出反应。未处理的拒绝(TypeError):无法读取未定义的属性“值”
- java - 从终端生成构建失败,但它可以通过“运行应用程序”选项工作(单击“运行应用程序”时)
- c# - Hololens 2 的光线投射问题
- azure - 有没有办法获取特定时间段内 Azure 事件中心使用者组中的事件计数?
- python - numpy数组中列组合的计算
- asp.net-mvc - 在加载 ASP.NET MVC 5 应用程序之前询问用户名和密码
- javascript - Chrome 扩展:未捕获的类型错误:无法读取 null 的属性“addEventListener”
- unity3d - Sprite Render with Pattern Texture ... Unity2D