【问题标题】:Jest require '@material-ui/icons' gives undefined开玩笑需要'@material-ui/icons'给出未定义的
【发布时间】:2021-05-21 06:49:09
【问题描述】:

当我尝试在 jest 中使用 require 或 require.requireActual 来导入“@material-ui/icons”时,jest 声称它是未定义的。

我猜这是一个错误/问题,因为我无法想象任何导出都未定义为 require。这个('@material-ui/icons/index.js')引用的文件使用这样的代码来定义它的导出:

Object.defineProperty(exports, "AccessAlarm", {
  enumerable: true,
  get: function get() {
    return _AccessAlarm.default;
  }
});

我知道 jest 确实对基本要求做了一些时髦的事情,也许这种导出定义的方法让 jest 出错了?

有没有人对此有任何见解、解决方案或变通办法等? 鉴于此限制,是否有人知道在“@material-ui/icons”中获取图标列表的方法(获取图标列表是我首先要做的全部),不,我不想使用文件阅读器。

明确地说,这是一个没有模拟的简单测试文件。

【问题讨论】:

    标签: reactjs jestjs material-ui


    【解决方案1】:

    所以我现在正在使用以下解决方案(自动模拟所有 material-ui 图标),因为它看起来好像一开始就无法处理它们,所以永久自动模拟它们没有害处:

    const mockIconsList = new Map();
    jest.mock('@material-ui/icons', () => new Proxy({__esModule: true}, {
      get: (target, prop) => {
        if (prop in target)
          return target[prop];
        if (!mockIconsList.has(prop))
          mockIconsList.set(prop, mockComponent(`mockMaterialIcon${prop}`));
        return mockIconsList.get(prop);
      },
    }));
    

    不过,我仍然对上述问题以及有关它的任何信息感到好奇。

    【讨论】:

      猜你喜欢
      • 2015-02-06
      • 1970-01-01
      • 1970-01-01
      • 2022-07-12
      • 2021-09-17
      • 2017-11-01
      • 2018-06-02
      • 2021-09-06
      • 2018-11-30
      相关资源
      最近更新 更多