的ActiveRecord的自動時間戳功能可設置爲Time.now
領域created_at and updated_at
覆蓋FactoryGiril
值。這是ActiveRecord的默認行爲。幸運的是它可以與
LivingArrangement.record_timestamps = false
機會被禁用是使用自定義時間戳創建模型後,你要關閉自動時間戳回。但是在你的單元測試中關閉和關閉許多地方會非常麻煩。你可以創建test_helper,像這樣
def without_timestamping_of(*klasses)
if block_given?
klasses.delete_if { |klass| !klass.record_timestamps }
klasses.each { |klass| klass.record_timestamps = false }
begin
yield
ensure
klasses.each { |klass| klass.record_timestamps = true }
end
end
end
的,你可以使用這個助手在你規範這樣
without_timestamping_of LivingArrangement do
create(:living_arrangement, :created_at => 1.week.ago, :updated_at => 1.week.ago)
end
或多個工廠
without_timestamping_of LivingArrangement, User do
create(:living_arrangement, :created_at => 1.week.ago, :updated_at => 1.week.ago)
create(:user, :created_at => 1.week.ago, :updated_at => 1.week.ago)
end
另一種常見的方法是使用TimeCop寶石
我知道這是很久以前的事了!這些答案中的任何一個最終幫助?我遇到了類似的問題。 – jordancooperman
我選擇了我使用的答案。 –