我正在尝试测试一个导出一个默认函数的文件,并且还在导出函数之前实例化一个对象,每次调用导出函数时该对象都需要保持为同一个实例。
这是该模块的简化版本:
import { HttpClient } from '../client'
const client = new HttpClient()
export default (params) => {
const url = 'www.'
// There's a little bit more code here to generate the url based on the params passed in
return client.get(url)
}
我想测试发送到 client.get() 函数的 url 是否正确,所以这里是测试:
import myModule from '../myModule'
import { HttpClient } from '../client'
jest.mock('../client')
const mockHttpClient = { get: jest.fn(() => 'test') }
HttpClient.mockImplementation(() => mockHttpClient)
it('should parse the query param string', () => {
console.log(myModule({}))
})
测试运行时,来自的响应myModule({})
始终未定义。
但是,如果我将该const client = new HttpClient()
行向下移动到导出函数的内部,它会正常工作并myModule({})
返回test
.
我只需要定义一次 HttpClient ,并且每次调用函数时都使用相同的实例,因此必须在函数外部对其进行实例化。如何模拟该对象创建以返回我的自定义值?谢谢。