在我的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
有关,但我不知道如何解决。为什么它有时会通过而有时会失败?!
感谢您的帮助。
答案 0 :(得分:0)
Time.zone.now + DEACTIVATION_TIME
使您的测试变得脆弱。如果我了解您测试正确,那么您有兴趣检查delete_at
记录上是否设置了正确的account
值。如果是这种情况,为什么需要将DEACTIVATION_TIME
添加到Time.zone.now
?在您提供的错误消息中增加了整整一小时