在Rails应用程序中,我有一个模型属性,用于设置用户执行操作时的日期时间。
测试此功能的最佳方法是什么,而不是太脆弱?
例如,我有
it "should set the uploaded time" do
@model.uploaded_at.should == DateTime.now.new_offset(0)
end
我的测试失败了应该通过
expected: Thu, 24 May 2012 10:32:50 +0000
got: Thu, 24 May 2012 10:32:50 UTC +00:00
所以我的问题是:
我应该如何定义DateTime.now.new_offset(0)
以便UTC
标记是预期的?
我可以看到这个测试可能因为失败而失败
时间的流逝。例如:工厂被创建,测试是
运行,1秒后运行it "should set the uploaded time"
,
由于1秒的差异,测试失败。有没有更好的测试方法
此
感谢您提供有助于我了解此问题的任何提示。
答案 0 :(得分:3)
为此目的有时间表 https://github.com/jtrupiano/timecop
答案 1 :(得分:2)
对于第二个问题,如果您不想添加另一个gem(timecop),您可以存根日期(DateTime.stub(:now).and_return :whatever
)或根据uploaded_at
更改的事实进行测试({ {1}})