如何使用jest模拟被调用函数?[duplicate]

xmd2e60i  于 2023-01-22  发布在  Jest
关注(0)|答案(1)|浏览(180)
    • 此问题在此处已有答案**:

How to mock functions in the same module using Jest?(10个答案)
2天前关闭。
我正在为一个文件中的函数编写测试。几个函数调用了另一个也在该文件中的函数。下面是它的外观:

function importantFunc(str) {
  //some logic
  return result;
}

function funcA() {
  //some logic
  const result = importantFunc('test A')
  //some logic
}

function funcB() {
  //some logic
  const result = importantFunc('test B')
  //some logic
}

我已经为importantFunc编写了一个测试,问题是如何测试mock在funcAfuncB中对importantFunc的调用,使它们不会直接调用importantFunc,而是使用我在mock中提供的结果?
jest.spyOnjest.fn之间,我在想jest.fn可能会起作用。但是我不能弄清楚它将如何与funcAfuncB绑定。

c0vxltue

c0vxltue1#

通常不能这样做,除非您从另一个模块导入importantFunc,在这种情况下,您将模拟整个模块。
你应该做的是重构你的代码,这样你的单元就不会彼此紧密耦合。

// in impl
function funcA(importantFunc) {
  //some logic
  const result = importantFunc('test A')
  //some logic
}

function funcB(importantFunc) {
  //some logic
  const result = importantFunc('test B')
  //some logic
}

// ...
// ...

// in test
const importantFunc = jest.fn(() => { ... });
funcB(importantFunc)

相关问题