用 Jest 覆盖 Material-UI MakeStyles

时间:2021-05-05 19:38:46

标签: reactjs unit-testing jestjs material-ui

每次我测试我的 Material UI 文件时,Jest 都会抱怨,因为我嘲笑 makeStyles 并说我没有覆盖整个文件。

所以,它显示在覆盖文件上:

Jest test results

我的测试文件有这个:

jest.mock('@material-ui/styles', () => ({
  ...jest.requireActual('@material-ui/styles'),
  makeStyles: () => () => ({}),
}))

我该如何嘲笑 makeStyles,让 Jest 不再抱怨这一点并使我的报道报告“误报”?

1 个答案:

答案 0 :(得分:1)

(“Jest 抱怨”到底是什么意思?如果我没看错的话,这完全是关于覆盖率报告,对吧?我猜测试本身是有效的。)

您的生产代码使用 theme => ({ cardContent, divider, spacer }) 之类的回调作为 makeStyles() 的参数,但您的模型确实忽略了这些参数,这样就对每个测试隐藏了回调 - 即不会有实际执行某些操作的测试与回调及其结果。

覆盖率报告是正确的 - 您遗漏了部分测试文件。以下内容可能会提高您的代码覆盖率,但如果没有更多逻辑,您最终可能会出现一些“误报”,我猜...

jest.mock('@material-ui/styles', () => ({
  ...jest.requireActual('@material-ui/styles'),
  makeStyles: cb => () => cb({ spacing: () => 0 }),
}))