我有一个看起来很简单的方案,但是我无法在文档中找到满足我需要的示例。我也进行了搜索,但显然没有找到任何东西...
我想从一个类中模拟一个函数,该类已在我实际测试的函数中初始化并使用。
这是一个例子:
// 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
})
我真的不确定为什么我还没有弄清楚,看来很常见吗?
有人吗?
答案 0 :(得分:0)
所以我想通了@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