【问题标题】:jest.mock - Cannot find module in React test filejest.mock - 在 React 测试文件中找不到模块
【发布时间】:2019-08-05 18:10:34
【问题描述】:

我想在我的测试用例中模拟广播频道,并遵循有关如何模拟模块的笑话文档。但是,当我运行测试时,我收到一个错误“无法从'broadcast.test.js'中找到模块'BroadcastChannel'”

我尝试查看 jest 和 broadcast-channel 的 github 上是否存在类似问题,但没有发现任何问题。

broadcast.test.js 内

import BroadcastChannel from 'broadcast-channel';

jest.mock('BroadcastChannel');

它应该使用模拟广播通道运行测试用例。但是,我只得到错误:

'Cannot find module 'BroadcastChannel' from 'broadcast.test.js''

【问题讨论】:

  • 你试过 jest.mock('broadcast-channel') 吗?此外,我认为您正在尝试模拟第三方模块。模拟库有一个特定的文件夹结构。检查documentation
  • @Andrea-codemillers.com - 我试过了,它奏效了,但是我的测试文件的覆盖率下降了。这种变化将如何影响新广播频道的创建?
  • @h-manner 尝试从您的统计信息中排除“mocks”文件夹?

标签: reactjs mocking jestjs


【解决方案1】:

您可以设置一个 setupTests 文件,您可以在其中为 BroadcastChannel 创建手动模拟并将其设置为窗口。

if (!window.BroadcastChannel) window.BroadcastChannel = BroadcastChannelMock;

这适用于您使用 react-scripts test 运行测试。

【讨论】:

    猜你喜欢
    • 2021-10-21
    • 2016-09-15
    • 2022-06-18
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    相关资源
    最近更新 更多