赛普拉斯四舍五入

Rounding in Cypress

我想将表格中的数字与设定的数字进行比较。问题是我们有几十种不同的系统,根据系统的不同,数字可以显示为小数点后 2 到 4 位。因此,在一个系统中,数字显示为 11,1265,在另一个系统中显示为 11,127,在另一个系统中显示为 11,13。因此我想在断言之前找到小数点后的数字。

我已经找到了这个 this answer 并尝试实施该解决方案。无法让它工作,因为赛普拉斯不知道 .toFixed()

这是我目前尝试过的方法:

  1. 来自回答1
cy.get('#Client_rate_ap').then(res => {
                expect(res.toFixed(2)).to.equal('11,13')
})

这个returns

TypeError
res.toFixed is not a function
  1. 与 cy.wrap()
 cy.get('#Client_rate_ap').then(res => {
                cy.wrap(res).toFixed(2).should('be.equal','11,13')
            })

 cy.get('#Client_rate_ap').then(res => {
                cy.wrap(res.toFixed(2)).should('be.equal','11,13')
            })

两者也return错误toFixed is not a function

{{edit}} 添加元素

这是我要比较值的元素:

<input class="rate_ap tariff-connected-field" name="Client[rate_ap]" id="Client_rate_ap" type="text" value="11,1300">

您必须先将文本转换为浮动,然后再应用 .toFixed(2)。类似于:

cy.get('#Client_rate_ap')
  .invoke('val')
  .then((rate) => {
    expect(parseFloat(rate).toFixed(2)*1).to.equal(11.13)
  })

如果您的价格以逗号显示,那么首先您必须将逗号替换为小数,在这种情况下您可以:

cy.get('#Client_rate_ap')
  .invoke('val')
  .then((rate) => {
    expect(parseFloat(rate.replace(',', '.')).toFixed(2)*1).to.equal(11.13)
  })

使用您已经找到的答案的最简单方法,

cy.get('#Client_rate_ap')
  .then(res => {
    expect(Math.abs(11.13 - res.replace(',','.'))).to.be.below(0.01)
  })
})