如何用 Jest 模拟/替换对象的 getter 函数?

2023-12-25

在Sinon我可以做以下事情:

var myObj = {
    prop: 'foo'
};

sinon.stub(myObj, 'prop').get(function getterFn() {
    return 'bar';
});

myObj.prop; // 'bar'

但我怎样才能对 Jest 做同样的事情呢? 我不能用类似的东西覆盖这个函数jest.fn(),因为它不会取代吸气剂

“无法设置get的值”


对于其他偶然发现这个答案的人,Jest 22.1.0 引入了以下功能:监视 getter 和 setter 方法 https://jestjs.io/docs/jest-object#jestspyonobject-methodname-accesstype.

编辑:就像西斯拉克的回答 https://stackoverflow.com/a/54346703/3930128下面,因为您可以监视 getter 和 setter 方法,所以您可以对它们使用 Jest 模拟,就像使用任何其他函数一样:

class MyClass {
  get something() {
    return 'foo'
  }
}

jest.spyOn(MyClass.prototype, 'something', 'get').mockReturnValue('bar')
const something = new MyClass().something

expect(something).toEqual('bar')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用 Jest 模拟/替换对象的 getter 函数? 的相关文章

随机推荐

  • spring自动装配aop循环依赖

    我正在使用 java 配置 ComponentScan为了初始化我的bean 和 EnableAspectJAutoProxy proxyTargetClass true 使用 cglib 代理 在这个项目中 我们有很多生成的服务 它们之间
  • 服务器标记在 asp 控件内不起作用

    好吧 让这快点 我想在更改或页面加载时动态设置日历扩展器的开始和结束日期 这些值被放入 ascx 上的隐藏字段中 并在页面加载期间在 if not postback 中填充 一组日历扩展器位于网格视图的项目模板字段中 称为set A 其他的
  • 使用钢琴键盘作为电脑键盘[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 I
  • Visual Studio 2015 错误。项目的默认 XML 命名空间必须是 MSBuild XML 命名空间

    让我用 是的 我见过类似的问题 但不完全是我的情况 作为问题的开头 我的环境是 Microsoft Visual Studio Professional 2015 版本 14 0 25431 01 更新3 我的行动 我创建一个新的 C 类库
  • java.io.IOException:管道损坏

    我们目前正在将遗留应用程序迁移到 Jetty 不知怎的 我对破损的管道有一个例外 Java 6 码头8 1 8 春季3 2 0 我正在尝试将 Glassfish Web 应用程序迁移到 Jetty 在我们的测试环境中 我们使用负载平衡器 一
  • iOS7 上的 Webview 被剪裁

    我开发了一个阅读器 在使用 css 添加水平分页后 它可以在 web 视图上显示 html 文件的内容 一切工作正常 但在 iOS7 上 我注意到 web 视图在左边缘被剪裁 我已经尝试过以下方法 readingWebView frame
  • 类型成员的表达式会产生不同的表达式(MemberExpression、UnaryExpression)

    描述 我有一个表达式来指向我类型的属性 但它并不适用于所有财产类型 不等于 的意思是 它会产生不同的表达类型 我以为这会导致MemberExpression但这种情况并非如此 For int and Guid它导致UnaryExpressi
  • Django:想要将空字段显示为空白而不是显示 None

    我有一个名为 client details html 的模板 它显示user note and datetime 现在有时 客户端可能没有用户 注释和日期时间的条目 我的程序将做的是显示None如果这些字段为空 我不想显示 无 如果某个字段
  • Android O 新的 TextToSpeech onRangeStart() 回调

    TTS UtteranceProgressListener 的新回调函数 onRangeStart 可以让我们突出显示 TTS 引擎朗读的较长短语中的各个单词 回调在 Android API 参考中定义 https developer an
  • ADO/SQL Server:“超时已过期”的错误代码是什么?

    我试图捕获来自 ADO 的 超时已过期 错误 当超时发生时 ADO 返回 Number 0x80040E31 DB E ABORTLIMITREACHED in oledberr h SQLState HYT00 NativeError 0
  • “空间”数据的平滑

    我有2个变量x and y它们是 0 1 处的笛卡尔坐标 以及z是这些坐标处的 连续 变量的值 这z向量有一些重要的异常值 x lt sample seq 0 1 0 001 replace F y lt sample seq 0 1 0
  • LVM2:无法创建块设备

    我正在尝试利用LVM2Linux Centos6 0 中的功能 当尝试在特定块设备上定义 PV 的第一步时 我收到以下错误消息 root localhost pvcreate dev sdb 无法以独占方式打开 dev sdb 挂载的文件系
  • 由于 Keycloak 默认登录重定向而导致混合内容错误

    所需信息 我在 Spring 项目后面使用 Keycloak Docker 版本 该项目的客户端是React 客户端和后端之间的通信由REST服务提供 客户端是安全的并使用 https 方案 这是我的 Spring 配置 keycloak
  • 将空值添加到 ASP.net MVC 中的 DropDownList

    我正在构建一个数据输入界面 并已使用 DropDownList 成功绑定了具有数据参考表的列 以便用户从预配置的值中进行选择 我现在的问题是 我不希望默认选择第一个值 我需要强制用户从列表中选择一个值 以避免出现错误 因为他们没有选择该字段
  • CodeIgniter 负载控制器视图

    有没有办法从视图加载控制器 这就是我所追求的 我想多次使用一个视图 但该视图是由单独的控制器加载的 该控制器提供视图和来自数据库的信息 因此 由于来自模型的信息 我不能只设置 this load gt view 等等 有没有办法做这件事 或
  • JNI 在应用程序中检测到错误:调用 JNI GetMethodID 时出现未决异常 java.lang.ClassNotFoundException:未找到类

    我收到以下错误 JNI 在应用程序中检测到错误 调用 JNI GetMethodID 时出现未决异常 java lang ClassNotFoundException 在路径上找不到类 package name class DexPathL
  • HTTPS 的代理 Servlet

    我有一个安全站点 需要在某些页面上显示来自外部非 https URL 的图像 我想创建一个 servlet 仅用作将图像数据传递到页面的代理 一种方法是使用 Apache 的 HttpClient 下载图像数据 然后使用 IOUtils c
  • a href=javascript:function() 在 Firefox 中不起作用

    我尝试使用a href javascript function 在一个按钮中 并带有执行它的函数 它在 Chrome 中工作 但在 Firefox 中不起作用 Firefox 不会发出警报并打开空白选项卡 有人可以帮助我吗 下面是按钮代码
  • Eclipse + Egit:将项目克隆到工作区

    我对它是如何工作的有点困惑 我在 Github 上有一个现有的 git 存储库 并且想将其克隆到我的工作区中 我的目标是将本地存储库直接存储在我的工作区文件夹中 但我无法将其与 EGit 一起使用 当我想使用 EGit 克隆 github
  • 如何用 Jest 模拟/替换对象的 getter 函数?

    在Sinon我可以做以下事情 var myObj prop foo sinon stub myObj prop get function getterFn return bar myObj prop bar 但我怎样才能对 Jest 做同样