You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Cypress中测试一个日期比另一个早6个月

在Cypress中验证SVG图表日期差6个月的问题

我正在测试一个SVG图表,其X轴包含动态日期(示例中earlyDate为'Feb 22',laterDate为'Aug 22')。我已经能从图表元素中获取日期值并存入变量,但不知道如何在Cypress中验证earlyDate始终比laterDate早6个月。

现有代码如下:

// 获取laterDateValue
cy.get("laterDateSelector").invoke('text').as('val');
cy.get('@val').then((val) => {
  let laterDate = val;
});
// 断言部分,这里卡壳了
cy.get('earlyDateSelector').should('equal', '需要在这里填写:laterDate减去6个月后、格式为MMM yy的日期');

解决方案

核心思路是把获取到的日期字符串转为可计算的Date对象,计算出laterDate减6个月后的日期并格式化为目标格式,再和earlyDate做断言匹配。

完整代码示例:

// 获取laterDate并执行日期计算与断言
cy.get("laterDateSelector").invoke('text').then((laterDateText) => {
  // 将日期文本转为Date对象
  const laterDate = new Date(Date.parse(laterDateText));
  
  // 计算早6个月的日期
  const expectedEarlyDate = new Date(laterDate);
  expectedEarlyDate.setMonth(laterDate.getMonth() - 6);
  
  // 格式化为'MMM yy'的形式(英文月份缩写+两位年份)
  const formattedDate = expectedEarlyDate.toLocaleDateString('en-US', {
    month: 'short',
    year: '2-digit'
  });
  
  // 验证earlyDate是否与计算结果一致
  cy.get('earlyDateSelector')
    .invoke('text')
    .should('equal', formattedDate);
});

注意事项

  • 确保laterDateText的格式能被Date.parse()正确解析,如果你的日期格式比较特殊,可能需要手动拆分月份和年份来构建Date对象
  • 使用en-US本地化参数是为了保证月份缩写为英文(如Feb、Aug),和测试示例的格式匹配
  • 该方法会自动处理跨年的情况,比如Jan 23减去6个月会得到Jul 22,无需额外处理

内容的提问来源于stack exchange,提问作者Codr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 09:40:26