2011-04-05 20 views
6

actualmente tengo un proyecto en Ruby on Rails funcionamiento de Ruby 1.8.7 y 2.3.2 Carrilesrieles 2.3.11 DateTime BigDecimal precisión

tengo algunas pruebas unitarias que leen datos desde una base de datos, específicamente una columna de fecha y hora para dos artículos consecutivos que se supone que tienen 24 horas de diferencia. En una prueba estoy estableciendo la fecha y hora para el artículo 2 igual a la del artículo 1.

Cuando hago una afirmación para asegurarme de que los dos valores son iguales, la prueba funciona bien debajo de los carriles 2.3.2. Cuando actualizo a los carriles 2.3.11, las pruebas muestran que es infructuosa la diferencia entre los dos tiempos para estar con el siguiente error:

<Thu, 01 Jan 2009 06:00:00 CST -06:00> expected but was 
<Thu, 01 Jan 2009 05:59:59 CST -06:00>. 

Parece que hay un problema con las conversiones de punto flotante en la versión de dos de rieles. ¿Cómo puedo explicar el problema del punto flotante?

+1

en su título se dice rieles 2.3.11, pero en su pregunta que decir 2.3.5, que es? –

+1

Gracias por señalar el problema, corregido. –

+1

¿Cuáles son los valores almacenados en la base de datos? Debería poder replicar su prueba en 'RAILS_ENV = script/consola de prueba' y luego inspeccionar los valores DB reales utilizando un shell SQL. ¿También está usando 'DateTime # advance' para ajustar sus valores o algún otro método? – tadman

Respuesta

2

Esto ha sucedido a mí también, y terminó haciendo esto:

datetime.should be_a(Datetime) # maybe unnecessary 
datetime.to_s.should == expected_datetime.to_s 
Cuestiones relacionadas