我最终陷入了一个小困境,我很想知道你对此的一般看法是什么以及我需要思考的不同。
我有一个名为发布的模型,其中包含 published_date 。在某些测试中,我使用FactoryGirl创建将此日期推回以进行统计计算等。现在我想要一个约束,以便不能将此日期推回去。我添加了验证,显而易见的问题是我在上面提到的测试中得到了验证错误。
你可以说我可以通过执行保存(验证:false)来跳过测试中的验证,但这会导致before_validation回调未运行,在我的情况下,正确设置数据并确保填写字段很重要数据等。
你对此有何看法?
答案 0 :(得分:1)
检查timecop gem它是否允许您操作时间,因此如果您的验证不允许过去的日期,您可以回到过去,然后Time.now
将返回旧时间,验证工作正常
这是你可以做什么的愚蠢样本
Timecop.freeze(30.days.ago) do
object = FactoryGirl.create(:some_object)
end
expect(object.created_at).to be <= 30.days.ago
答案 1 :(得分:0)
您可以在规范文件或规范帮助程序之前打开该类,并覆盖before_validation
env中的test
方法。喜欢 -
class Post < ActiveRecord::Base
def method_before_Validation
true
end
end