Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jest模拟类实例函数_Javascript_Ecmascript 6_Jestjs - Fatal编程技术网

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

这可能对你有帮助啊,谢谢你的帮助!