Jest - 模拟函数返回了一个非函数值

3

我想使用jest模拟一个函数,但在调用模拟函数的代码中出现了错误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的消息已经打印出来了。我相信问题出在我编写的模拟(mock)方式上。

请问如何进行got()的模拟?

提前感谢您的帮助。

1个回答

1
< p > jest.mock 的第二个参数应该是一个模块工厂函数,它返回模拟对象。

你只需要将你的模拟对象包装在一个工厂函数中并返回即可:

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

1
非常酷,不知道模块工厂函数,必须查找它!这是文档:https://jestjs.io/docs/en/es6-class-mocks#calling-jestmock-docs-en-jest-object-jestmockmodulename-factory-options-with-the-module-factory-parameter - stealththeninja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接