Javascript Jest模拟类实例函数
我有一个场景,看起来很简单,但我无法在文档中找到一个例子来满足我的需要。我也搜索过了,但没有发现任何明显的 我想从一个初始化的类中模拟一个函数,并在我实际测试的函数中使用它 下面是一个例子:Javascript Jest模拟类实例函数,javascript,ecmascript-6,jestjs,Javascript,Ecmascript 6,Jestjs,我有一个场景,看起来很简单,但我无法在文档中找到一个例子来满足我的需要。我也搜索过了,但没有发现任何明显的 我想从一个初始化的类中模拟一个函数,并在我实际测试的函数中使用它 下面是一个例子: // helpers.js import API from './api' export const validateUsername = async (username) => { const myApi = new API() try { await myApi.validate
// helpers.js
import API from './api'
export const validateUsername = async (username) => {
const myApi = new API()
try {
await myApi.validate(username)
return 'valid'
} catch (e) {
return 'invalid'
}
}
在我的测试中,我想模拟myApi.validate
,使其返回有效的响应或抛出。但由于某种原因,我找不到方法去做
// helpers-test.js
it('returns "invalid" if the username is invalid', async () => {
// here I need to mock myApi.validate to return or throw
})
我真的不知道为什么我还没有弄明白这一点,这似乎很常见,对吗
有人吗?多亏了@Volodymyr,我才明白过来 我认为我的主要问题是在模仿lib之前导入它
jest.mock('path/to/api')
import {Api} from 'path/to/api'
const validateMock = jest.fn().mockImplementation(() => {...})
Api.prototype.validate = validateMock
// now it works
这可能对你有帮助啊,谢谢你的帮助!