0
学习反应我正在尝试编写更高阶的组件以在项目上添加删除按钮。我想不出我在做什么错在这里:高阶组件将包装元素呈现为'标记'字符串
const deletableItem = WrappedComponent => {
const DeletableItemWrapper = class extends React.Component {
render() {
return (
<div>
<WrappedComponent {...this.props} />
<button onClick={this.props.onDelete}>delete</button>
</div>
)
}
}
DeletableItemWrapper.propTypes = {
onDelete: PropTypes.func.isRequired
}
DeletableItemWrapper.displayName =
'DeletableItemWrapper_' +WrappedComponent.displayName
return DeletableItemWrapper
}
我这样测试它:
describe('deletableItem',() => {
it('should contains dumb',() => {
const onDelete = sinon.spy()
const DumbComponent =() => <div>dumb</div>
const Item = deletableItem(DumbComponent)
const wrapper = shallow(<Item onDelete={onDelete} />)
expect(wrapper.text()).to.contains('dumb')
})
})
测试给我:
AssertionError: expected '<DumbComponent />delete' to include 'dumb'
所以它看起来像HOC不是呈现'包裹元素',而是将标签作为一个字符串。我错过了什么 ?