我正在使用 Factory Girl 在我的模型/单元测试中为一个组创建两个实例。我正在测试模型以检查对 .current 的调用是否根据到期属性仅返回“当前”组,如下所示...
describe ".current" do
let!(:current_group) { FactoryGirl.create(:group, :expiry => Time.now + 1.week) }
let!(:expired_group) { FactoryGirl.create(:group, :expiry => Time.now - 3.days) }
specify { Group.current.should == [current_group] }
end
我的问题是,我在模型中进行了验证,检查新组的到期日期是否在今天之后。这会引发下面的验证失败。
1) Group.current
Failure/Error: let!(:expired_group) { FactoryGirl.create(:group, :expiry => Time.now - 3.days) }
ActiveRecord::RecordInvalid:
Validation failed: Expiry is before todays date
有没有办法强制创建组或在使用 Factory Girl 创建时绕过验证?
最佳答案
这对于 FactoryGirl 来说并不是很具体,但在通过 save(validate: false)
保存模型时,您始终可以绕过验证:
describe ".current" do
let!(:current_group) { FactoryGirl.create(:group) }
let!(:old_group) do
g = FactoryGirl.build(:group, expiry: Time.now - 3.days)
g.save(validate: false)
g
end
specify { Group.current.should == [current_group] }
end
关于ruby-on-rails - Factory-girl 创建绕过我的模型验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9322353/