如何模拟像 new Date() 这样的构造函数

2024-01-08

我有一个方法取决于new Date创建一个日期对象,然后对其进行操作。我正在测试操作是否按预期工作,因此我需要将返回日期与预期日期进行比较。为了做到这一点,我需要确保new Date在测试和正在测试的方法中返回相同的值。我怎样才能做到这一点?

有没有办法真正模拟构造函数的返回值?

我可以创建一个模块,该模块需要提供日期对象并且可以被模拟的函数。但这在我的代码中似乎是不必要的抽象。

要测试的示例函数...

module.exports = {
  sameTimeTomorrow: function(){
    var dt = new Date();
        dt.setDate(dt + 1);
    return dt;
  }
};

我如何模拟的返回值new Date()?


从 jest 26 开始,您可以使用“现代”fakeTimers 实现(请参阅此处的文章 https://jestjs.io/blog/2020/05/05/jest-26#new-fake-timers)支持该方法jest.setSystemTime.

beforeAll(() => {
    jest.useFakeTimers('modern');
    jest.setSystemTime(new Date(2020, 3, 1));
});

afterAll(() => {
    jest.useRealTimers();
});

注意'modern'将是 jest 版本 27 的默认实现。

请参阅文档setSystemTime here https://jestjs.io/docs/en/jest-object#jestsetsystemtimenow-number--date.

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

如何模拟像 new Date() 这样的构造函数 的相关文章

  • chrome 调试器承诺在暂停时不会解析?

    也许我没有正确调试承诺 但基本上 如果您在断点处停止并运行异步代码 它实际上不会完成 直到您恢复执行为止 这是一个问题 调试器允许您快速试验多个 api 方法 但如果您恢复它 您就不能 debugger now type the follo
  • 如何使用 selenium 和 Mocha 获取 xPath() 选择的锚标记的文本

    我已经成功选择了 a 标签 我想显示锚标记的文本 但无法这样做 我正在使用 selenium mocha javascript 和 phantomJS 这是我的脚本 详细 var assert require assert var test
  • 动态速度计 javascript 或 jquery 插件

    我希望有动态ajax插件在页面上显示速度计 一个想法是我设置一个背景并旋转针 有人知道相关插件吗 这里有一些供您参考 http bernii github com gauge js http bernii github com gauge
  • 如何使用 JavaScript 中的值填充下拉列表?

    我在 Tridion CMS 扩展中的功能区工具栏按钮中添加了一个按钮 单击该按钮后 将显示一个弹出页面 其中包含两个下拉菜单 通过更改第一个下拉控件中的值 我应该填充第二个下拉控件的值 就我而言 我正在使用ASP drop down li
  • 如何仅在 NextJS 站点构建期间使用 getInitialProps?

    当使用 NextJS 构建静态站点时 我想要getInitialProps方法仅在构建步骤期间触发 而不是在客户端上触发 在构建步骤中 NextJS 运行getInitialProps 方法 https nextjs org docs fe
  • 通过 node-http-proxy 保留基于 cookie 的会话

    我有一个简单的基于 Express 的 Node js Web 服务器 用于开发 JavaScript 应用程序 我将服务器设置为使用 node http proxy 来代理应用程序向在不同域和端口上运行的 Jetty 服务器发出的 API
  • 如何使JavaScript函数在Eclipse“大纲视图”中可见?

    我有这样的代码 但如果它在匿名函数中定义 则无法打开函数大纲 类没有问题 我该如何概述something2 请分享一些提示 我可以将所有函数标记为构造函数 但这是无效的方法 start of track event required deb
  • JS用正则表达式替换数字

    我有元素的标识符 如下所示 form book 1 2 3 我想要的是用其他值替换该标识符中的第二个数字 我将函数 match 与以下正则表达式一起使用 var regexp d d d 但它返回我包含的数组 1 2 3 2 因此 当我尝试
  • JavaScript 代码在不使用 ActiveX 的情况下截取网站屏幕截图

    我有一个用户与之交互的 JavaScript 应用程序 我需要保存当前界面的外观 裁剪出我需要的部分 或者通过指定div只拍摄我需要的部分 然后发送回服务器 显然任何外部服务都无法做到这一点 我需要一个 JavaScript 或Flash
  • 如何将函数内的捕获错误传递给父级

    我有这几行代码示例 想知道下面的逻辑到底如何 try var response child console log why here catch err console log should show this err function c
  • JavaScript onresize 事件多次触发

    我在尝试仅在触发 onresize 事件时运行一次函数时遇到一些麻烦 我已经看过这个问题DOM onresize 事件 https stackoverflow com questions 1500312 javascript onresiz
  • 如何获取 UIWebView 中元素的位置?

    我在 iPad 程序中加载了 html 的 UIWebView 通过使用 webkit column width 我将 html 分为几列 padding 0px height 1024px webkit column gap 0px we
  • 如何在 Google 地图 V3 中创建编号地图标记?

    我正在制作一张上面有多个标记的地图 这些标记使用自定义图标 但我还想在顶部添加数字 我已经了解了如何使用旧版本的 API 来实现这一点 我怎样才能在V3中做到这一点 注意 当您将鼠标悬停在标记上时 标题 属性会创建一个工具提示 但我希望即使
  • Jquery - 通过在字符串中构建 id 的 id 获取元素

    我在使用 jquery 元素时遇到问题 我正在 var 中构造名称 例如 var myId myGotId myId attr title changed myId 返回空 我想通过 id 获取我的元素 但动态构建我的 Id 连接字符串 编
  • 单击引导分页链接时调用 jquery 函数

    我想在单击引导分页链接时调用 jquery 函数 假设我想从第1页遍历到第2页 应该调用一个jquery函数 我正在使用以下代码 但它不起作用 ul pagination on click li function alert page ch
  • 需要有关 React Js 的帮助

    我是 React Js 新手 我的代码无法正常工作 请看下面 这是我的脚本文件Main jsx 该文件由 React 编译 输出放置在 dist 文件夹下的 main js 文件中 var react require react react
  • 防止文本区域出现新行

    我正在开发聊天功能 使用 Vue 并使用文本区域作为输入 以便溢出换行 并且对于编写较长消息的用户来说更具可读性 不幸的是 当用户按下 Enter 键并提交时 光标会在提交之前移动到新行 从而使用户体验感觉不佳 关于如何使用普通 Javas
  • 在 Javascript 中减少/分组数组

    基于this https stackoverflow com a 40774906 3254598例如 我想以稍微不同的方式按对象进行分组 结果应该如下 key audi items make audi model r8 year 2012
  • KeyboardAvoidingView - 隐藏键盘时重置高度

    我正在使用 React NativeKeyboardAvoidingView设置我的高度View当显示键盘时 但是当我关闭应用程序中的键盘时 视图的高度不会变回原来的值
  • 单击列表时使用 bootstrap Dropdown 防止下拉菜单消失

    我正在使用使用引导下拉菜单 http twitter github com bootstrap javascript html dropdowns生成下拉菜单 我想防止点击菜单时菜单消失 我已经实现了以下代码 但它不起作用 知道如何修复它吗

随机推荐

  • Spark的HiveContext内部是如何工作的?

    我是 Spark 新手 我发现使用HiveContext我们可以连接到hive并运行HiveQLs 我运行它并且它起作用了 我的疑问是Spark做到了spark jobs 也就是说 它使用HiveContext仅用于从HDFS访问相应的hi
  • 使用 Gulp 读取、重建和替换文件中的内容块的最有效方法是什么?

    我正在创建一个可以读取任何文件 php jsp html 等 定位块标签并根据块标签中的信息进行替换的系统 我将写入我的文件的代码 testObject name jonathan number 3 male true 所需更换 h1 Jo
  • 在 Visual Studio 中,我可以在调试时禁用对应用程序进行签名吗?

    在 Visual Studio 的项目属性 gt 签名选项卡中 我已使用代码签名证书对我的项目进行了签名 然而 在我的团队中 我是唯一拥有代码签名证书的人 即使我们处于多开发人员环境中 当其他开发人员尝试 开始调试 时 他们会收到以下消息
  • 编译错误 - Groovy 和 Lombok

    这是我的 Maven 命令 mvn clean compile test compile test for 这个项目 https github com prystasj lombok groovy example 但我面临着 错误 不再有标
  • 打开自定义 UITableViewCell 时在溢出菜单中显示/隐藏辅助功能元素

    我正在自定义中实现辅助功能UITableViewCell班级 我有一个相当简单的溢出菜单 里面有几个按钮 这些按钮是隐藏的 直到按下省略号按钮滑动打开并关闭溢出 在我的单元格的初始化程序中 我设置accessibilityElementsH
  • L 系统信息

    我即将启动一个大学项目 为现有项目建造一座程序城市 我想知道你们中是否有人有过编写 L Systems 的经验 并且知道我应该从哪里开始 在使用程序方法 Perlin 噪声和 fBm 之前我已经做了一些工作 所以我得到了分形意义上的 L 系
  • 使用嵌入式 Jetty 提供静态文件

    我正在尝试构建一个带有嵌入式 Jetty 的简单演示应用程序 该应用程序从 html 目录 当前工作目录的子目录 提供静态文件 这个想法是 包含演示 jar 和内容的目录可以移动到新位置并且仍然可以工作 我已经尝试过以下变体 但我不断收到
  • Dart 编辑器和 SDK(解压下载后)通常安装/移动到的文件夹是什么?

    Dart 编辑器和 SDK 解压下载后 通常安装 移动到的文件夹是什么 Applications 请遵循https dart dev get dart https dart dev get dart brew tap dart lang d
  • 查找活动的参加者

    我正在尝试显示 公共 谷歌日历中的事件 我的要求是获取与会者的数量 不一定是与会者的姓名 但是 当我使用日历 API 使用 API 密钥和 CalendarID 获取事件时 该活动缺少提到的整个与会者部分here https develop
  • grep R中列表内向量的精确匹配

    我有一个这样的列表 map tmp lt list ABC c EGF HIJ c KML ABC IOP SIN KMLLL gt grep ABC map tmp 1 1 3 gt grep ABC map tmp 1 1 by usi
  • 为什么 SignalProducer 不返回信号?

    我觉得我理解了 ReactiveCocoa 的所有基本组件 概念上 通过理解如何将所有部分连接在一起仍然有点令人困惑 例如 在阅读了有关 Signal 的内容后 我完全期望 SignalProducer 只有一个返回 Signal 的 st
  • apple/swift 中的 Swift 函数对象包装器

    看完之后 https github com rodionovd SWRoute wiki Function hooking in Swift https github com rodionovd SWRoute wiki Function
  • 自定义 ViewCell Xamarin Tableview C# 中的按钮

    再次期待您的帮助 我试图让最右侧的按钮能够删除表视图控件中的行 现在他们现在知道他们在哪一行 但我无法将此信息连接到父级 表视图中填充有自定义视单元 自定义视图单元格包含两个不同的选择器 两个输入字段和一个按钮 我还没有找到更干净的方法来执
  • NSFileManager 创建目录错误 518 NSFileWriteUnsupportedSchemeError

    我试图创建一个目录 NSError error nil NSString BIDirectory NSSearchPathForDirectoriesInDomains NSCachesDirectory NSUserDomainMask
  • Win32 - 从标准输入读取超时

    我正在尝试做一些我认为应该很简单的事情 从标准输入进行阻塞读取 但如果没有可用数据 则在指定的时间间隔后超时 在 Unix 世界中这很简单select 但这在 Windows 中不起作用 因为stdin不是插座 不创建额外线程等的下一个最简
  • 为我的第一个组件编写一个玩笑测试

    我刚刚写完第一篇Reactjs组件 我准备编写一些测试 我使用material ui s Table and Toggle 我读到jest and enzyme但我觉得我还缺少一些东西 我的组件如下所示 简化 export default
  • 拦截文件系统系统调用

    我正在编写一个应用程序 我需要拦截一些文件系统系统调用 例如 取消链接 我想保存一些文件 比如 abc txt 如果用户删除该文件 那么我需要将其复制到其他地方 所以我需要在删除 abc 之前取消链接来调用我的代码 以便我可以保存它 我已经
  • Xcode - 找不到架构 x86_64 的符号(iOS Lib)

    我正在构建一个静态库 构建设置将架构设置为 ARCHS STANDARD 显示为Standard Architectures armv7 armv7s arm64 我选择 iOS 设备构建库 然后使用模拟器 例如 iPhone Retina
  • 两个字符串的比较在android中不起作用[重复]

    这个问题在这里已经有答案了 这是我的代码 Eclipse 没有显示任何错误 程序工作正常 但它根本不完全符合我的要求 View image view danger rate ImageView findViewById R id origi
  • 如何模拟像 new Date() 这样的构造函数

    我有一个方法取决于new Date创建一个日期对象 然后对其进行操作 我正在测试操作是否按预期工作 因此我需要将返回日期与预期日期进行比较 为了做到这一点 我需要确保new Date在测试和正在测试的方法中返回相同的值 我怎样才能做到这一点