首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嘲笑Uppy时意外的Jest错误

嘲笑Uppy时意外的Jest错误
EN

Stack Overflow用户
提问于 2022-05-06 20:03:37
回答 1查看 225关注 0票数 2

我试图在Jest单元测试中,按照Uppy的指导,从乌皮包中模拟这是先前回答的问题。类。我的错误代码如下:

代码语言:javascript
复制
import Uppy from '@uppy/core';

describe('MyComponent', () => {
  it('renders', () => {
    jest.mock('@uppy/core', () => {
      return {
        Uppy: jest.fn().mockImplementation(() => {
          return {};
        }),
      };
    });
    
    new Uppy();
    expect(Uppy).toHaveBeenCalledTimes(1);
  });
});

以下错误消息导致测试失败:

代码语言:javascript
复制
Matcher error: received value must be a mock or spy function

Received has type:  function
Received has value: [Function Uppy]

@uppy/core的默认导出似乎是Uppy类,因此我的期望是提供的代码将模拟类的构造函数,但情况似乎并非如此。

包版本:

  • 乌皮: 2.1.2
  • 开玩笑: 27.4.7
EN

回答 1

Stack Overflow用户

发布于 2022-05-08 14:13:04

我认为问题在于您在错误的时间使用jest.mock()。换句话说,我认为在测试用例中调用jest.mock()为时已晚,因为那时包已经导入了

我不知道这样做的标准方法是什么,但这里是如何反应的:

  • 它有一个名为单独档案 has jest.mock()
  • 从上面看,该文件的路径是Jest的选项的值;如您所见,此选项位于config.base.js文件中:
代码语言:javascript
复制
module.exports = {
  globalSetup: require.resolve('./setupGlobal.js'),
}
  • 当测试脚本运行时,它将基于提供的参数进行选择配置
  • 这种配置的一个例子是这个文件,正如您可以看到的那样,它扩展了config.base,这是设置globalSetup选项的地方。
代码语言:javascript
复制
/* ... */
const baseConfig = require('./config.base');

module.exports = Object.assign({}, baseConfig, { /* ... */ });
/* ... */

所以,我想说,利用这个选项应该可以解决问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72146821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档