开玩笑不嘲笑(设置间谍)所需的功能

时间:2018-11-01 12:11:52

标签: javascript jestjs

我的测试功能 reverseAdd 调用另一个在同一模块中定义的功能 add 。 我需要测试,如果测试函数调用另一个。

模块

function add(a, b) {
  return a + b;
}

function reverseAdd(a, b) {
  add(b, a);
}

module.exports = {
  add,
  reverseAdd
}

测试

const exp = require('./add');

describe('add', () => {
  it('should add two numbers', () => {
    expect(exp.add(1, 2)).toBe(3);
  });

  it('should add two numbers', () => {
    exp.add = jest.fn();

    exp.reverseAdd();

    expect(exp.add).toHaveBeenCalledTimes(1);
  });
});

结果

Expected mock function to have been called one time, but it was called zero 

据我了解,包装函数是另一个函数,在测试函数中未调用。

如何包装/监视功能添加

游乐场:https://repl.it/repls/WoodenElectricInstances

1 个答案:

答案 0 :(得分:0)

感谢@ltamajs,我发现了solution

需要将模块重写为

function add(a, b) {
  return a + b;
}

function reverseAdd(a, b) {
  module.exports.add(b, a); <----- here changes
}

module.exports = {
  add,
  reverseAdd
}