手动 Jest 模拟不适用于 create-react-app

时间:2021-05-21 08:53:33

标签: jestjs create-react-app react-testing-library

我正在使用最新的 create-react-app 并且能够为普通的 React 组件运行测试用例。

现在查看一些更复杂的组件,这些组件具有调用 customHook 来渲染组件的几个部分。所以想模拟那些自定义钩子,例如如下

  1. 具有自定义钩子 useMe 和 useCertificate 的 ApprovalRequestCertCard 组件
  2. ApprovalRequestCertCard.test.tsx
jest.mock('../hooks/useMe', () => ({
  __esModule: true,
  default: () => ({
  data: {
    role: 'MondraAdmin',
  },
 }),
}));

jest.mock('../hooks/useCertificate');

test('Render ApprovalRequestCertCard', () => {
render(
 <ApprovalRequestCertCard
   readOnly={true}
   cert={cert}
   companyId=""
   onUpdate={update}
 />
);
expect(screen.getByText('Impacts under review')).toHaveClass(
 'font-medium text-lg'
);
});
  1. useCertificate.ts 来自 ..hooks/__mocks__
  const useCertificate = jest.fn(() => ({
     inProgress: false,
     cancelApproval: jest.fn().mockName('cancelApproval'),
     approve: jest.fn().mockName('approve'),
     reject: jest.fn().mockName('reject'),
     revoke: jest.fn().mockName('revoke'),
     sendStartDate: jest.fn().mockName('sendStartDate'),
     cancel: jest.fn().mockName('cancel'),
     unrevoke: jest.fn().mockName('unrevoke'),
     editCertification: jest.fn().mockName('editCertification'),
  }));

  export default useCertificate;
  1. 这是模拟的文件夹结构enter image description here

  2. 但是当我运行测试时模拟函数不起作用,请参阅下面的错误 enter image description here

  3. 以下错误enter image description here

0 个答案:

没有答案