Archive for Julho 3rd, 2009
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.


