Почему моя спецификация, связанная со временем, терпит неудачу так часто? - PullRequest
0 голосов
/ 27 октября 2018

В моем приложении на Rails 5 я регулярно запускаю набор тестов, содержащий более 1000 тестов.Большую часть времени они все проходят.Однако время от времени один тест продолжает терпеть неудачу:

describe 'DELETE #destroy' do

  context "with valid password" do

    it "sets delete_at" do
      delete :destroy, :params => {:password => @user.password}
      expect(@account.reload.delete_at).to be_within(2.seconds).of(Time.zone.now + DEACTIVATION_TIME)
    end

  end

end

Сообщение об ошибке всегда одинаково:

Failure/Error: expect(@account.reload.delete_at).to be_within(2.seconds).of(Time.zone.now + DEACTIVATION_TIME)
   expected 2018-11-06 09:42:29.000000000 +0100 to be within 2 of 2018-11-06 10:42:29 +0100

Я предполагаю, что ошибка как-то связана с Timezones, ноЯ понятия не имею, как это исправить.И почему это иногда проходит, а иногда и терпит неудачу?!

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 01 марта 2019

Time.zone.now + DEACTIVATION_TIME делает ваш тест хрупким.Если я правильно понимаю, что вы тестируете правильно, вы заинтересованы в проверке правильности значения delete_at для записи account.Если это так, зачем вам нужно добавлять DEACTIVATION_TIME к Time.zone.now?Это добавляет целый час в сообщениях об ошибках, которые вы предоставили

...