我正在使用 React 测试库为以下组件编写测试。当我检查测试覆盖率时,它告诉我传递给道具'errorRender'的函数的覆盖率没有被覆盖。
下面是我的组件:
import React from 'react';
import Icon from './Icon';
import Image from './Image';
function Container(props) {
const {img, caption} = props;
return (
<figure>
<div>
<Image
img={img}
errorRender={() => (
<div>
<div>
<Icon/>
</div>
</div>
)}
/>
</div>
{caption && (
<figcaption>{caption}</figcaption>
)}
</figure>
);
}
export default Container;
我如何测试传递给 errorRender 道具的函数?我正在考虑避免测试子组件“图像”,因为它将单独测试,但是放弃它并没有给我 100% 的测试覆盖率,这在我们的项目中是必需的。
我在测试文件中模拟了“图像”子组件,如下所示:
jest.mock('./Image', () => {
return function Image() {
return <div> Image </div>
};
});
然后这样做:
jest.mock('./Image', () => {
return function Image({errorRender}) {
errorRender();
return <div> Image </div>
};
});
虽然上面的嘲笑给了我 100% 的测试覆盖率,但是对 React 测试来说是新手,我不确定这样做是否正确?我们应该在父组件测试文件中测试传递给子组件的值吗?正确的方法应该是什么?