[英]How to set object type props value in an enzyme for a react component?
我嘗試了兩種方法,
1。
const wrapper=shallow(<ActiveConversation />)
wrapper.setProps({activeConversation:c,agent:a});
expect(wrapper.prop('messagesList')).to.equal(messagesList);
2。
const wrapper=shallow(<ActiveConversation messagesList={messagesList}
agent={agent} contactFormState={d} tagSuggestions={t}/>);
但是這兩個道具仍未定義
你正確地設置props
。 問題是wrapper.prop()
在你的特定情況下返回undefined
。 發生這種情況是因為實際的wrapper
不是<ActiveConversation />
,而是它返回的內容。 因此,您的prop()
調用嘗試從<ActiveConversation />
返回的根節點獲取帶有messagesList
鍵的prop
。
例如,如果<ActiveConversation />
組件呈現如下內容:
<div className='conversation'>
<ConversationRenderer
messagesList={this.props.messagesList}
activeConversation={this.props.activeConversation}
info={info? true: false}
/>
{info}
</div>
wrapper.prop('messagesList')
將嘗試在此節點中找到prop <div className='conversation'>
(不是它的子節點),並且由於沒有一個,將返回undefined
。
為了通過測試, <ActiveConversation />
應該呈現如下內容:
<div
messagesList={this.props.messagesList}
className='conversation'
>
<ConversationRenderer
messagesList={this.props.messagesList}
activeConversation={this.props.activeConversation}
info={info? true: false}
/>
{info}
</div>
但我猜這不是你想要的。
順便說一句,但你的測試似乎毫無意義。 有什么意義呢? 測試是否設置了prop
? 這是關於react
功能,留給Facebook測試:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.