Jestjs Jest和Ezyme-如何测试子组件的属性函数(用于测试覆盖率)

Jestjs Jest和Ezyme-如何测试子组件的属性函数(用于测试覆盖率),jestjs,enzyme,test-coverage,Jestjs,Enzyme,Test Coverage,为了简化-我有一个组件,比如说,我是这样使用它的: ... <Label labelText="Some text" renderText={(text) => { const cssClass = text.length < 5 ? 'one-class' : 'other-class'; return <b className={cssClass}>{text}</b>; }} /> ... 。。。 { const

为了简化-我有一个组件,比如说
,我是这样使用它的:

...
<Label
  labelText="Some text"
  renderText={(text) => {
    const cssClass = text.length < 5 ? 'one-class' : 'other-class';
    return <b className={cssClass}>{text}</b>;
  }}
/>
...
。。。
{
const cssClass=text.length<5?“一类”:“另一类”;
返回{text};
}}
/>
...
所以-我有一个属性,它是一个定义文本显示方式的函数。一切都很好,一切正常

但是,当我运行
jest--coverage
时,它会显示设置为
cssClass
的行未被覆盖


如何测试该行?

有两种测试方法。您需要两个测试用例:一个用于
text.length<5
,另一个用于
text.length>=5

第一种方法是使用
mount()
。在这里,您需要弄清楚
文本
参数来自何处(作为
道具
传递到您的组件或方法)。然后,您将得到一些
或任何形式的
渲染。您需要检查内部是否有
text
text1

另一种方法是在组件上使用
shallow()
。然后您将能够显式测试
renderText

it('renders label with text having length of 4', () => {
  const renderText = shallow(<YourComponent ... >).find(Label).props().renderText;
  expect(renderText('1234')).toEqual(<b className="one-class">1234</b>);
});

it('renders label with text having length of 5 or more', () => {
  const renderText = shallow(<YourComponent ... >).find(Label).props().renderText;
  expect(renderText('12345')).toEqual(<b className="other-class">12345</b>);
});
it('呈现长度为4'的文本标签,()=>{
const renderText=shallow().find(Label.props().renderText;
expect(renderText('1234')).toEqual(1234);
});
它('使用长度为5或更多的文本呈现标签',()=>{
const renderText=shallow().find(Label.props().renderText;
expect(renderText('12345')).toEqual(12345);
});

您是否正在测试系统的两侧?(在
text.length
小于5以及大于或等于5时进行测试)问题是我不知道如何测试
renderText
函数/属性。