【发布时间】:2011-07-27 02:01:23
【问题描述】:
我正在尝试结合使用 Timecop 并将 arel where_sql 查询到数据,但我似乎无法让 Timecop 真正冻结时间。我已经尝试过 Timecop.freeze 和 Timecop.freeze(Time.now),在我的规范中使用 Time.now 时,两者都略有偏差。
我错过了什么? Ruby 1.9.2、Rails 3.1.0.rc5
--
错误
Failure/Error: Game.unreleased.arel.where_sql.should eq("WHERE (release_date > '#{Time.now}')")
expected "WHERE (release_date > '0000-01-01 00:00:00 -0500')"
got "WHERE (release_date > '0000-01-01 05:00:00.000000')"
型号
scope :unreleased, lambda { |limit = 4| where('release_date > ?', Time.now).
order('release_date asc').
limit(limit) }
规格
it "should retrieve games with a release date later than today" do
Timecop.freeze
Game.unreleased.arel.where_sql.should eq("WHERE (release_date > '#{Time.now}')")
end
【问题讨论】:
-
仔细观察,我认为这不是 timecop,而是时间戳格式的问题。现在只是想办法解决这个问题。
标签: ruby-on-rails ruby-on-rails-3 testing rspec