Rails / RSpec:使用:指定观察者规范?

时间:2016-01-06 18:24:34

标签: ruby-on-rails rspec rspec-rails observers

我将更改记录到要在活动供稿中使用的模型中。我有一个观察者这样做(activerecord脏):

def before_update(derp)
  @changes = derp.changes
end

这将此功能从控制器中抽象出来。我想用rspec测试一下,所以我有这个:

it "assigns derp.changes to @changes" do
  derp.attribute = 5
  @observer.before_update(derp)
  expect(assigns(:changes)).to eq(derp.changes)
end

我收到此错误:未定义的方法`分配' for RSpec :: ExampleGroups :: DerpObserver :: BeforeUpdate:0x007fc6e24eb7f8

如何在观察者规范中使用赋值?或者,有没有其他方法可以测试@changes是否已分配?

1 个答案:

答案 0 :(得分:0)

instance_variable_get就是我要找的。

http://apidock.com/ruby/Object/instance_variable_get

expect(@observer.instance_variable_get(:@changes)).to eq(derp.changes)