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不是呈現'包裹元素',而是將標籤作爲一個字符串。我錯過了什麼 ?