我将使用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。有人能帮助我吗?因为我似乎无法解决这个问题。
functions.secondFunc = ...
时,你只是覆盖了你的模块导出内容。而不是实际的secondFunc
函数,在firstFunc
中有一个对它的引用(它是一个const
,这使得它更明显不是你实际覆盖的内容)。一些有趣的解决方法可以在这里找到。 - blexfirstFunc
的方式违反了单元测试的规则,单元测试应该只关心给定输入的预期输出。 - MarkoCenaxios
),以便请求不会真正发生,但你想要检查是否向它传递了正确的参数(你不需要测试axios
是否实际发出了该请求,因为它有自己的测试)。 - blex