2013-07-03 34 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

感謝您的回答。但是,我可以以後以某種方式拒絕嗎?當我製作所有必需的物體並準備好進行測試時? –

相關問題