赛普拉斯错误:最大值 -14876746378 应大于最小值 0

问题描述 投票:0回答:1

我很抱歉我是编程和自动化的初学者。 我在测试运行期间不断收到此错误。我试图使用 @faker-js/faker 创建一个随机日期,并且我能够更早地做到这一点。我什至能够继续进行检查复选框的部分。

这是我的代码:

beforeEach(() => {
        cy.visit("xxx")
        cy.get("input[type='text']").type("[email protected]")
        cy.get("input[type='password']").type("Test2023!")
        cy.get("button[type='submit']").click()
        cy.xpath("//span[normalize-space()='Cycle Calendar']").click()
        //cy.wait(2000)
        cy.xpath("//span[normalize-space()='Add New Cycle Calendar']").click()
        //cy.wait(1000)
    })



    it("Receiving from the mobiler", () => {
        //generate random start and end dates for the date picker
        const startDate = faker.date.future(    )
        const endDate = faker.date.between(startDate, faker.date.future())

        //Format date to yyyy-mm-dd
        const formattedStartDate = dayjs(startDate).format('YYYY-MM-DD')
        const formattedEndDate = dayjs(endDate).format('YYYY-MM-DD')

        //click start date
        cy.get("input[placeholder='Start date']").click({force: true}).type(formattedStartDate)
        cy.get("input[placeholder='End date']").click({force: true}).type(formattedEndDate)

        //checkboxes MON-SAT
        cy.xpath("(//input[@type='checkbox'])[1]").check({force: true})
        cy.xpath("(//input[@type='checkbox'])[2]").check({force: true})
        cy.xpath("(//input[@type='checkbox'])[3]").check({force: true})
        cy.xpath("(//input[@type='checkbox'])[4]").check({force: true})
        cy.xpath("(//input[@type='checkbox'])[5]").check({force: true})
        cy.xpath("(//input[@type='checkbox'])[6]").check({force: true})
        cy.xpath("(//input[@type='checkbox'])[7]").check({force: true})

        const validDays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
        const validDaysCount = countValidDaysInRange(formattedStartDate, formattedEndDate, validDays)
        cy.log('Number of valid days between ${formattedStartDate} and ${formattedEndDate}: ${validDaysCount}')
        //cy.get("button[type='submit']").click()
        //cy.xpath("//span[contains(text(),'Continue')]").click()

        function countValidDaysInRange(formattedStartDate, formattedEndDate, valid) {
            const start = dayjs(formattedStartDate)
            const end = dayjs(formattedEndDate)
            let count = 0
        
            for (let current = start; current <= end; current.add(1,'day')) {
                if (validDays.includes(current.format('dddd'))){
                    count++
                }
            }}

    })

这是我在 Cypress 中收到的错误消息: 错误信息

cypress faker faker.js
1个回答
0
投票

这里的问题是,您的开始日期和结束日期颠倒了。

const startDate = faker.date.future()
const endDate = faker.date.between(startDate, faker.date.future())

由于

faker.date.between
的两个参数都是使用
faker.date.future()
创建的,因此后面的调用可能会返回比第一次调用更小的值,因此是负偏移/值。

我建议将

refDate
参数传递给后面的 future,这样 future 就在
startDate
之后。

我不确定您使用的是哪个版本,但使用 faker-js v8.4.1 可以实现以下功能:

const startDate = faker.date.future();
const endDate = faker.date.future({ refDate: startDate });

如果

future
太远了,你也可以尝试
soon({refDate: startDate})

© www.soinside.com 2019 - 2024. All rights reserved.