如何在after_initialize回调中需要该日期时测试模型是否无效而没有数据

时间:2015-09-11 22:10:12

标签: ruby-on-rails ruby rspec

我有Foo belongs_to

的课程Bar

Foo我设置了after_initialize回调,根据初始化的Bar为其列计算多个值。

在我的规范中,我想测试Foo在没有Bar的情况下无效。我遇到的问题是,当我在没有Foo的情况下实例化Bar时,after_initialize回调会运行并尝试访问引发异常的Bar

1 个答案:

答案 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