2017-06-21 48 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将会是未定义的)。