【问题标题】:Insufficient Jest coverageJest 覆盖率不足
【发布时间】:2021-11-05 07:11:01
【问题描述】:

我有以下代码:

      <ReturnToLastSearch
        href={'/listings'}
        onClick={(e): void => {
          e.preventDefault();
          router.back();
        }}
      />

ReturnToLastSearch({ href, onClick }: Props)里面有以下内容:

<a className="button" onClick={!onClick ? urlOnClick : onClick}>

一切正常,除了 jest 抱怨我的差异,它添加了 onClick 属性并且三元的测试覆盖率不足!

我试过了:

it('when onClick is defined uses onClick', () => {
  const call = ()=> ({back: jest.fn()});
  jest.mock('next/router', call)
  const { getByText } = render(<ReturnToLastSearch href="foo" onClick={call}/>);
  getByText(i18n.t('favorites.returnToLastSearch') as string).click();

  expect(router.back).toHaveBeenCalledWith('/listings')
});

我试过上面的,除了router.back()的expect和mock之外,和没有onClick的版本一样。但是,我收到一条错误消息,告诉我jest.mock() 中的第二个参数应该是内联函数。

什么样的测试才有意义,并且还能说服我不要管我?

谢谢

【问题讨论】:

    标签: javascript reactjs unit-testing jestjs next.js


    【解决方案1】:

    我最终得到了:

    it('when onClick is defined uses onClick', () => {
      const call = jest.fn();
      const { getByText } = render(<ReturnToLastSearch href="foo" onClick={call} />);
      getByText(i18n.t('favorites.returnToLastSearch') as string).click();
    
      expect(call.mock.calls.length).toBe(1);
    });
    

    在我看来,这不是最有用的测试。然而,它确实让jest 离开了我。

    【讨论】:

      猜你喜欢
      • 2020-05-05
      • 2020-06-03
      • 2019-06-11
      • 1970-01-01
      • 2019-12-18
      • 1970-01-01
      • 1970-01-01
      • 2021-04-27
      • 2019-04-08
      相关资源
      最近更新 更多