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
函数/属性。