我尝试为一个函数编写一个单元测试,这个函数调用同一个文件中的一些辅助函数,我使用jest.spyOn来模拟这些辅助函数,因为它似乎可以做到这一点。
我的模块.js
export const getUserName = () => {
return "mjordan"
}
export const getItem = () => {
return 'basketball'
}
export const getUserWithItem = () => {
const userName = getUserName()
const item = getItem()
return userName + " " + item
}
我的模块.测试.js
import * as myModule from 'path/to/module'
describe('getUserWithItem', () => {
beforeEach(() => {
jest.restoreAllMocks()
})
it('Returns user with item', () => {
jest.spyOn(myModule, 'getUserName').mockImplementation(() => 'tigerwoods')
jest.spyOn(myModule, 'getItem').mockImplementation(() => 'golf ball')
const result = myModule.getUserWithItem()
expect(result).toEqual("tigerwoods golf ball")
})
})
但是,jest.spyOn
函数似乎没有模拟spied on函数的实现,而是测试调用了原始函数,结果输出为mjordan basketball
。
我是否遗漏了spyOn
应该如何工作的一些内容?
1条答案
按热度按时间polhcujo1#
我发现的最简单的方法是在模块中显式调用函数的导出版本,即