javascript - 使用 jest 模拟 moment() 和 moment().format
问题描述
我无法模拟moment()
或moment().format
发挥作用。我有状态,currentDateMoment
并且currentDateFormatted
正在设置如下。
currentDateMoment: moment() //2019-04-23T17:45:26.339Z
currentDateFormatted: moment().format('MM-DD-YYYY').valueOf() //"04-23-2019"
试图在我的快照测试中模拟两者moment()
以moment().format
返回特定日期,但无法。下面试过了。
jest.mock('moment', () => () => '2018–01–30T12:34:56+00:00');
jest.mock('moment', () => ({
constructor: () => '2018–01–30T12:34:56+00:00'
}));
jest.mock('moment', () => () => ({ format: () => '01–30-2018' }));
解决方案
模拟 moment() 和它使用的任何函数(即.day()
, .format()
)的最简单方法是更改引擎盖下使用Date
的moment()
在您的测试文件中添加以下代码段
Date.now = jest.fn(() => new Date("2020-05-13T12:33:37.000Z"));
这使得它可以随时moment()
在您的测试中调用,moment()
认为今天是 2020 年 5 月 13 日,星期三
推荐阅读
- azure - Azure B2C - 使用非英语电子邮件地址登录
- php - 向 ajax jQuery 添加方法时显示 PHP 警告消息
- service - 如何注册自定义服务链元素
- matlab - 'HessPattern' 在 matlab 中不起作用?
- php - 使用 phpseclib 检查文件是否已存在
- javascript - 删除最后一个正斜杠和它之前的文本
- qt - Qt:使用 QFileDialog 选择文件夹和文件,使用本机对话框
- php - 如何在本地主机上修剪我的家庭网址
- sql-server - SQL Server Management Studio 命令延迟
- ios - 添加 ChildViewController 时 UIView 动画不起作用