为什么我的时间相关规范经常失败?

问题描述 投票:0回答:1

在我的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有某种关联,但我不知道如何解决它。为什么它有时会通过,有时会失败?!

谢谢你的帮助。

rspec rspec-rails
1个回答
0
投票

Time.zone.now + DEACTIVATION_TIME让你的测试变得脆弱。如果我理解你正确测试,你有兴趣检查在delete_at记录上设置了正确的account值。如果是这样,为什么你需要将DEACTIVATION_TIME添加到Time.zone.now?它在您提供的错误消息中添加了整整一个小时

© www.soinside.com 2019 - 2024. All rights reserved.