在我的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
有某种关联,但我不知道如何解决它。为什么它有时会通过,有时会失败?!
谢谢你的帮助。
Time.zone.now + DEACTIVATION_TIME
让你的测试变得脆弱。如果我理解你正确测试,你有兴趣检查在delete_at
记录上设置了正确的account
值。如果是这样,为什么你需要将DEACTIVATION_TIME
添加到Time.zone.now
?它在您提供的错误消息中添加了整整一个小时