我正在使用Jest测试一些Javascript。在一个名为“ function.js”的文件中,我有两个类似的函数:
functions.js
const firstFunc = () => {
const x = secondFunc()
return x
}
const secondFunc = () => {
return '5'
}
module.exports = {
firstFunc,
secondFunc
}
在Jest测试文件中,我有:
const functions = require('./functions.js')
test('test if secondFunc is called', () => {
const mockFunction = jest.fn()
functions.secondFunc = mockFunction;
functions.firstFunc()
expect(mockFunction).toHaveBeenCalled()
})
我实际上已经尝试过许多类似的事情。我无法使jest.fn()正常工作。总的来说,我希望能够看到有关secondFunc的信息,例如调用了它的次数,使用了哪些参数等,但是我必须实际调用firstFunc。谁能帮助我,因为我似乎无法弄清楚。
答案 0 :(得分:2)
您需要进行一些重构。为secondFunc
保留相同的参考。
然后,您可以将其替换为模拟对象。
functions.js
:
const firstFunc = () => {
const x = exports.secondFunc();
return x;
};
const secondFunc = () => {
return '5';
};
exports.firstFunc = firstFunc;
exports.secondFunc = secondFunc;
单元测试结果:
PASS stackoverflow/62583841/functions.test.js (12.17s)
✓ test if secondFunc is called (3ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 13.779s