Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在react脚本中使用defaultProps时,覆盖率降低_Javascript_Reactjs_Jestjs_React Scripts - Fatal编程技术网

Javascript 在react脚本中使用defaultProps时,覆盖率降低

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

我使用的是最新版本的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 {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测试渲染器和快照进行了类似的测试,但覆盖率仍然没有增加。我认为在这种情况下,最好将默认道具从覆盖率报告中排除