2017-06-21 66 views
0

我試圖對作爲元件提供的元素進行斷言。針對元素支撐的酶聲明

例如

function ComponentUnderTest() { 
    const foo = <span></span> 
    return <Bob something={foo} /> 
} 

我試圖做這樣的事情:

shallow(<ComponentUnderTest />) 
    .prop(‘something’) 
    .matchesElement(<span></span>) 

,但我得到類似的錯誤:

(0,_enzyme.shallow)(...)丙( ...)matchesElement不是一個函數

這就像我需要提高東西prop值到酶包裝器API。

關於如何做到這一點,並避免必須挖掘元素本身的任何想法。

+1

它不是''的道具,而是'',不是嗎?看起來它沒有找到一個道具來投射這個功能。 –

+0

是的,我已經檢查過我自己,但它看起來像淺,立即解決了第一個組件,在這種情況下是「Bob」。我也嘗試過'淺(...),發現(Bob).first()。prop('something')'儘可能顯式,但它產生了相同的結果。 – ctrlplusb

+0

將道具實際傳遞給正在渲染的組件並檢查它是否在給定元素內找到給定文本不是更好嗎? – Ozan

回答

0

以上Ria的評論對我來說似乎是正確的。 .prop(‘something’)將返回「something」屬性的屬性值。此屬性值不會是ShallowWrapper實例(您可以通過將.prop(‘something’)打印到控制檯來檢查它的實際內容)。因此,當您嘗試調用一個不存在的函數時會得到正常的JavaScript錯誤(因爲.prop(‘something’).matchesElement將會是未定義的)。