比较赛普拉斯中的两个日期值

Comparing two date values in cypress

我正在尝试检查我从应用中的元素获得的日期值是否小于今天的日期:

 const todaysDate = Cypress.moment().format('DD/MM/YYYY')

  it("Check date to be less or equal than todays", () => {
      cy.get('.date', { timeout: 15000 }).eq(3).invoke('text').should('be.lte', todaysDate);
    })

但是我收到以下错误:

Timed out retrying after 4000ms: expected '12/14/2020' to be a number or a date

有没有办法将从元素获取的日期转换为日期时间对象?

您可以使用 JavaScript 提供的内容:

const date = new Date('12/14/2020');

所以在 Cypress 的上下文中:

it("Check date to be less or equal than today", () => {
    cy
      .get('.date', { timeout: 15000 })
      .invoke('text')
      .then(dateText => {
        const date = new Date(dateText);
        const today = new Date();
        
        expect(date).to.be.lte(today);
    });
});

moment 库已弃用,建议改用 dayjs。在解析自定义日期格式时,您将需要它,Javascript 日期构造函数可能不支持这种格式。根据您的错误消息,我假设预期格式应该是 MM/DD/YYYY 而不是 DD/MM/YYY.

it("Check date to be less or equal than todays", () => {
    cy.get('.date', { timeout: 15000 }).invoke('text').then(actualDateText => {
        const dayjs = require('dayjs');
        const todaysDate = new Date();
        const actualDate = dayjs(actualDateText, 'MM/DD/YYYY').toDate();

        expect(actualDate).to.be.lte(todaysDate);
    });
});