Testar atributos do tipo datetime com o Rspec
Você já tentou usar o Rspec para testar se o timestamp gravado em um campo datetime é igual a uma determinada data/horário? O código abaixo possivelmente irá falhar miseravelmente:
@blabla.update_attributes(:foo => "bar) @blabla.updated_at.should == Time.now
o Time.now é bem preciso e vai pegar várias casas na faixa dos milissegundos, e isso pode gerar alguma diferença entre o retorno de Time.now quando a coluna foi atualizada no banco e quando você realiza a asserção no teste. Uma solução para o problema é fazer:
@blabla.updated_at.should be_close(Time.now, 1.second)
Esse teste passará para qualquer timestamp com uma diferença de +- 1 segundo em relação ao retorno do Time.now no momento da asserção. Altere esse delta T como desejar :).
Essa solução também é indicada para testar valores numéricos de ponto flutuante.



Interessante, aprendi mais uma :-)
Geralmente usava o time_travel (http://github.com/notahat/time_travel/tree/master) pra fazer isso, mais acho que agora não vou mais precisar hehe
um abraço!
Thiago Pradi
Julho 3, 2009 em 11:09 pm
Legal Cássio,
dica simples e bastante útil, não conhecia essa..
Valeu, abraço.
Carlos A. da Silva
Julho 4, 2009 em 12:36 am