赛普拉斯四舍五入
Rounding in Cypress
我想将表格中的数字与设定的数字进行比较。问题是我们有几十种不同的系统,根据系统的不同,数字可以显示为小数点后 2 到 4 位。因此,在一个系统中,数字显示为 11,1265,在另一个系统中显示为 11,127,在另一个系统中显示为 11,13。因此我想在断言之前找到小数点后的数字。
我已经找到了这个 this answer 并尝试实施该解决方案。无法让它工作,因为赛普拉斯不知道 .toFixed()
这是我目前尝试过的方法:
- 来自回答1
cy.get('#Client_rate_ap').then(res => {
expect(res.toFixed(2)).to.equal('11,13')
})
这个returns
TypeError
res.toFixed is not a function
- 与 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)
})
})
我想将表格中的数字与设定的数字进行比较。问题是我们有几十种不同的系统,根据系统的不同,数字可以显示为小数点后 2 到 4 位。因此,在一个系统中,数字显示为 11,1265,在另一个系统中显示为 11,127,在另一个系统中显示为 11,13。因此我想在断言之前找到小数点后的数字。
我已经找到了这个 this answer 并尝试实施该解决方案。无法让它工作,因为赛普拉斯不知道 .toFixed()
这是我目前尝试过的方法:
- 来自回答1
cy.get('#Client_rate_ap').then(res => {
expect(res.toFixed(2)).to.equal('11,13')
})
这个returns
TypeError
res.toFixed is not a function
- 与 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)
})
})