2013-07-03 35 views
2

使用FactoryGirl.create创建对象时,是否可以关闭模​​型的观察者(使用after_create动作)?在使用Rails 4中的FactoryGirl创建模型实例时关闭观察者

我想在开始测试前创建一堆对象,但观察者会刹车。所以我想在真正的测试开始之前关闭它。

+0

你能告诉我们一些你的代码吗,可能有另一种方法来做你想做的事情。 AFAIK你不能禁用观察者,你可能会将回调残留掉,但这可能不会影响观察者。 – spullen

+0

@spullen,'ActiveRecord :: Base.observers.disable:all'呢?它会起作用吗? –

+0

是的,应该。不知道你可以关闭这样的观察者。很高兴知道。 – spullen

回答

5

似乎有可能跨应用程序禁用所有观察者(或特定的一个)。使用下面的代码在构建观察对象时将其关闭/打开。

FactoryGirl.define do 

     factory :user do 
     association :status, :factory => :user_status 

     before(:create) do 
      ActiveRecord::Base.observers.disable :user_observer 
     end 

     after(:create) do 
      ActiveRecord::Base.observers.enable :user_observer 
     end 
     end 
end 
-1

只是将它们存在您的测试用例中。

例如

UserObserver.instance.stub(:after_save => true) 
+0

感谢您的回答。但是,我可以以后以某种方式拒绝吗?当我制作所有必需的物体并准备好进行测试时? –

相关问题