【发布时间】:2018-04-28 04:53:35
【问题描述】:
我们使用的是Semantic React UI library。代码通常如下所示:
<div className="EditTemplateMetaDataPage">
<Page title={...}>
<Container text>
<Segment>
<Grid columns={1}>
<Grid.Column>
<Button ...>
这对许多人来说可能很有趣,使用类似的 React 组件库,如 Material UI 或 Bootstrap React。
我们目前使用mount 和enzyme 库而不是shallow,因为我们只会渲染一层深度
, 到测试中的第一个 <Grid> 组件,它只是一个视觉帮助,而我们确实需要更深埋的 Button。
为了性能和避免重叠测试,建议使用shallow。 (我们关注London school TDD,只检查子组件是否存在以及它们的接口是否正确使用)
我们想出将 CSS-only 用于可视化组件,即
<div className='ui one column grid'>
代替:
<Grid columns={1}>
但我们不确定这是否是最佳方法。你有其他想法吗?在这种情况下我们如何使用shallow(...)?
【问题讨论】:
-
将组件与语义-ui-react 包装器分开并自行测试,有帮助吗?例如,如果您有一个应该存在于语义 UI 网格中的类似卡片的结构,那么分解成一个单独的卡片组件并自行测试它?
-
一直在考虑类似的解决方案@DimitrisKaragiannis!这也是使用 React 组件时的一般最佳实践。问题是,假设您只想断言
WrapperComponent包含这些CardComponents 的列表,例如另一个名为CardComponentList的包装器。只要他们在Grid中,这是不可能的。只要将Grid、Segment等用于基本的布局结构,这些东西就变得非常困难。我想我会为此使用原生 DOM 元素。这也是功能设计和纯设计之间更清晰的关注点分离。
标签: javascript reactjs tdd enzyme semantic-ui-react