Почему RSpec выдает ошибку, несмотря на то, что разница между ожидаемым и полученным значением равна нулю - PullRequest
0 голосов
/ 03 августа 2011

Я периодически получаю следующую ошибку RSpec и путаюсь с тем, что это такое:

Failure/Error: Question.all[index].created_at.should == sorted_publish_dates[index]
       expected: Tue, 02 Aug 2011 21:11:11 UTC +00:00
            got: Tue, 02 Aug 2011 21:11:11 UTC +00:00 (using ==)
       Diff:
     # ./spec/models/question_spec.rb:23:in `block (3 levels) in <top (required)>'

Ожидаемые и полученные значения выглядят одинаково, поэтому я не понимаю, почему RSpec считаетпроблема.

Ответы [ 3 ]

2 голосов
/ 03 августа 2011

Вы тестируете против Time.now (я подозреваю).Несмотря на то, что rspec показывает ту же строку времени, она не включает миллисекунды в вывод.Вам нужно будет заглушить Time.now при настройке теста, чтобы можно было надежно измерить, что вы фактически тестируете то же время, что и объект.

before do
  Time.stub!(:now).and_return("2011-02-08 21:11:11")
end
1 голос
/ 03 августа 2011

Если вы хотите увидеть, каковы эти значения времени на самом деле, преобразуйте их в числа с плавающей точкой через to_f, прежде чем попросить rspec сравнить их.будет отображать точность в микросекундах.

Возможно, вы захотите переосмыслить то, как вы генерируете эти значения для теста и в вашем приложении.В вашем приложении гарантируется, что 2 значения времени будут одинаковыми, с точностью до микросекунды?Если да, то генерирует ли ваш тест то же время?

0 голосов
/ 03 августа 2011

To_s для ваших предметов одинаковы.Это не значит, что предметы одинаковы.Могу поспорить, что это экземпляры разных классов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...