2015-09-24 18 views
13

Stiamo usando Chai's BDD API per scrivere test di unità.Come posso testare l'uguaglianza in virgola mobile usando chai?

Come possiamo affermare l'uguaglianza in virgola mobile?

Per esempio, se provo a fare questa affermazione per verificare la presenza di un valore di ritorno 66⅔%:

expect(percentage).to.equal(2/3 * 100.0); 

ottengo questo fallimento:

AssertionError: expected 66.66666666666667 to equal 66.66666666666666 
Expected :66.66666666666666 
Actual :66.66666666666667 

risposta

5

Il within asserzione può essere utilizzato per controllare se un numero in virgola mobile è vicino al risultato previsto:

expect(percentage).to.be.within(66.666, 66.667); 
16

stavo cercando g anche per questo, e a parte questa domanda, ho trovato anche this discussion per una richiesta di funzionalità che ha portato all'aggiunta di closeTo. Con ciò è possibile specificare un valore e un delta +/-, quindi in pratica consente di specificare la precisione con cui controllare il risultato.

percentage.should.be.closeTo(6.666, 0.001); 

Non è perfetto, naturalmente, perché questo approverà qualsiasi numero 6,665-6,667.