首页 > 解决方案 > 开玩笑 - 模拟函数返回不是一个函数

问题描述

我正在尝试使用 jest 模拟一个函数,但在调用 mock 的代码上出现错误TypeError: got is not a function

在我的实现中,我有类似的东西:

const got = require('got')
got('...', {})

我把模拟函数写成:

jest.mock('got', (url, options) => {
  console.log('on my way', url)
  return 1
})

该消息on my way已打印,但我收到了提到的错误。我很确定问题出在我编写模拟的方式上。

关于如何模拟的任何帮助got()

预先感谢。

标签: javascriptunit-testingjestjs

解决方案


第二个参数jest.mock应该是返回模拟的模块工厂函数。

您只需要将模拟包装在返回它的工厂函数中:

jest.mock('got', () => {
  return (url, options) => {
    console.log('on my way', url)
    return 1
  }
});

推荐阅读