我有Foo
belongs_to
。
Bar
在Foo
我设置了after_initialize
回调,根据初始化的Bar
为其列计算多个值。
在我的规范中,我想测试Foo
在没有Bar
的情况下无效。我遇到的问题是,当我在没有Foo
的情况下实例化Bar
时,after_initialize
回调会运行并尝试访问引发异常的Bar
。
答案 0 :(得分:1)
当我测试验证时,我首先使用FactoryGirl构建一个有效对象,更改它以测试各种验证案例。
在您的情况下,您可以使用有效的条形建立foo:
FactoryGirl.define do
factory :foo do
bar
end
end
然后测试删除栏:
let(:foo){ build :foo }
…
it "should be invalid without bar" do
foo.bar = nil
expect(foo).to be_invalid
expect(foo.errors.messages[:bar]).to eq "can't be blank"
end