Состояние гонки в тесте запроса Rspec - PullRequest
1 голос
/ 13 марта 2012

У меня проблема с тем, что я проверяю, что текущее время было вставлено в html (используется для сортировки time_ago с помощью javascript).

Текущее время Unix (эпоха) отображается в атрибуте данных данного элемента html, в данном случае, например:

<a href="/somewhere" data-last-points-awarded-at="1331606458">Something Happend</a>

Но когда мой тест запускается:

recipe = Factory(:recipe, name: "Apple Pie", user: @user)

visit some_path

time_in_layout = find('a[data-last-points-awarded-at]')['data-last-points-awarded-at']
current_time = Proc.new { Time.now }.call.to_i.to_s

time_in_layout.should eql(current_time)

После запуска моего теста он не проходит ... но едва:

Failure/Error: time_in_layout.should eql(current_time)

   expected: "1331606459"
        got: "1331606458"

   (compared using eql?)

Все хорошо, тест в значительной степени так, как я на самом деле хочу, чтобы он работал, однако, процесс возвращает время, которое на секунду позже, как я могу это исправить? Например, как я могу заблокировать время в начале теста, могу ли я вообще так поступить?

1 Ответ

2 голосов
/ 13 марта 2012

Проверьте TimeCop , поскольку он делает именно то, что вы хотите.

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