Javascript 在react脚本中使用defaultProps时,覆盖率降低
我使用的是最新版本的react脚本,当我尝试为一个方法添加默认道具时,覆盖率就会降低 计划Javascript 在react脚本中使用defaultProps时,覆盖率降低,javascript,reactjs,jestjs,react-scripts,Javascript,Reactjs,Jestjs,React Scripts,我使用的是最新版本的react脚本,当我尝试为一个方法添加默认道具时,覆盖率就会降低 计划 "dependencies": { "prop-types": "^15.6.2", "react": "^16.7.0", "react-dom": "^16.7.0", "react-scripts": "^3.3.0" } 组成部分 class App extends React.Component { render() { const {onC
"dependencies": {
"prop-types": "^15.6.2",
"react": "^16.7.0",
"react-dom": "^16.7.0",
"react-scripts": "^3.3.0"
}
组成部分
class App extends React.Component {
render() {
const {onClick} = this.props;
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.js</code> and save to reload.
</p>
<button
className="App-link"
onClick={onClick}
>
Learn React
</button>
</header>
</div>
);
}
}
App.propTypes = {
onClick: PropTypes.func
}
App.defaultProps = {
onClick: () => {}
}
新报道
正如@Drew Reese提到的,解决方案是只模拟onClick,而不通过onClick道具
test("default prop for onClick", () => {
const { getByTestId } = render(<SearchBox />);
fireEvent.click(getByTestId("whatever"));
});
test(“onClick的默认属性”,()=>{
const{getByTestId}=render();
firevent.click(getByTestId(“任意”);
});
正如@Drew Reese提到的,解决方案是只模拟onClick而不通过onClick道具
test("default prop for onClick", () => {
const { getByTestId } = render(<SearchBox />);
fireEvent.click(getByTestId("whatever"));
});
test(“onClick的默认属性”,()=>{
const{getByTestId}=render();
firevent.click(getByTestId(“任意”);
});
当回调没有传递给组件时,您是否添加了一个单元测试用例来覆盖它?这是我唯一的测试:``它('Should click button',()=>{const onClick=jest.fn();const component=shallow();component.find('.App link')。simulate('click');expect(onClick).tohaveincalledtimes(1);``你是说什么类型的测试?所以每次我添加defaultProps时,我都需要用Jest测试de-defaultProps?不,但是如果您希望获得100%的覆盖率,您可以编写一个测试,该测试不通过单击prop,搜索按钮文本,并模拟单击。不过,这不是一个非常有说服力的测试,因为它不是真正测试代码,而是测试react设置默认属性值。这是关于我将从“渲染和不崩溃”开始的地方。我想总的来说,如果你的覆盖率至少是80%,那么你就处于一个好的位置。谢谢你的回答。我确实使用react测试渲染器和快照进行了类似的测试,但覆盖率仍然没有增加。我认为在这种情况下,最好是从覆盖率报告中排除默认的道具。当回调没有传递到组件时,您是否添加了一个单元测试用例来覆盖它?这是我唯一的测试:```it('Should click button',()=>{const onClick=jest.fn();const component=shall();component.find()('.App link').simulate('click');expect(onClick).toHaveBeenCalledTimes(1)})“``你的意思是什么类型的测试?所以每次我添加defaultProps时,我都需要用Jest来测试de defaultProps?不,但是如果你想获得100%的覆盖率,你可以编写一个测试,但它不能通过单击prop,搜索按钮文本,然后模拟单击。这不是一个非常有吸引力的测试,因为它不是真正的测试你的代码,但它是测试,反应设置默认道具值。这是关于我将开始与一个“渲染和不崩溃”。我认为一般来说,如果你的覆盖率至少为80%,那么你就处于一个好位置。感谢Drew给出的答案。我确实使用react测试渲染器和快照进行了类似的测试,但覆盖率仍然没有增加。我认为在这种情况下,最好将默认道具从覆盖率报告中排除