Quiero comparar un número de un formulario con un número establecido. El tema es que tenemos decenas de sistemas diferentes y dependiendo del sistema el número puede mostrarse con 2 a 4 decimales. Entonces, en un sistema, el número se muestra como 11,1265, en otro como 11,127 y en otro como 11,13. Por lo tanto, me gustaría encontrar el número con decimales antes de la afirmación.
Ya encontré esta respuesta y traté de implementar la solución. Sin embargo, no se pudo hacer que funcionara porque Cypress no sabe .toFixed()
Esto es lo que he probado hasta ahora:
cy.get('#Client_rate_ap').then(res => { expect(res.toFixed(2)).to.equal('11,13') })esto vuelve
TypeError res.toFixed is not a function cy.get('#Client_rate_ap').then(res => { cy.wrap(res).toFixed(2).should('be.equal','11,13') })y
cy.get('#Client_rate_ap').then(res => { cy.wrap(res.toFixed(2)).should('be.equal','11,13') }) Ambos también devuelven el error toFixed is not a function
{{editar}} Elemento agregado
Este es el elemento con el valor que quiero comparar:
<input class="rate_ap tariff-connected-field" name="Client[rate_ap]" id="Client_rate_ap" type="text" value="11,1300">Primero debe convertir su texto en flotante y luego aplicar .toFixed(2) . Algo como:
cy.get('#Client_rate_ap') .invoke('val') .then((rate) => { expect(parseFloat(rate).toFixed(2)*1).to.equal(11.13) })En caso de que sus precios se muestren en coma, primero debe reemplazar la coma con un decimal, en ese caso puede:
cy.get('#Client_rate_ap') .invoke('val') .then((rate) => { expect(parseFloat(rate.replace(',', '.')).toFixed(2)*1).to.equal(11.13) })La forma más sencilla usando la respuesta que ya encontraste,
cy.get('#Client_rate_ap') .then(res => { expect(Math.abs(11.13 - res.replace(',','.'))).to.be.below(0.01) }) })