javascript - Jest 模拟类实例函数

标签 javascript ecmascript-6 jestjs

我有一个看起来非常简单的场景,但我无法在文档中找到满足我需要的示例。我也搜索过,但显然没有发现任何东西......

我想从一个类中模拟一个函数,该类已初始化并在我实际测试的函数中使用。

这是一个例子:

// 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

关于javascript - Jest 模拟类实例函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52860251/

相关文章:

firebase - 使用 Jest 测试 Firebase 函数 - 错误 : moduleName. split 不是函数

JavaScript 条件评估结果为 false?

javascript - 在 React Component 中多次解构 Props?

正则表达式中的 JavaScript 不匹配某些内容

javascript - 使用 ImmutableJS Record 创建具有不同属性的子类

javascript - 尝试这个例子后,对 Javascript 中的 Maps 和 Set 的基础知识感到困惑

javascript - 从所有行中获取单击的单选按钮值

javascript - 什么是解构赋值及其用途?

unit-testing - 如何使用 Jest 仅模拟一个测试文件的模块?

javascript - Jest 捕获输入更改事件并验证在受控 react 组件上使用正确的值调用它