使用FactoryGirl.create創建對象時,是否可以關閉模型的觀察者(使用after_create動作)?在使用Rails 4中的FactoryGirl創建模型實例時關閉觀察者
我想在開始測試前創建一堆對象,但觀察者會剎車。所以我想在真正的測試開始之前關閉它。
使用FactoryGirl.create創建對象時,是否可以關閉模型的觀察者(使用after_create動作)?在使用Rails 4中的FactoryGirl創建模型實例時關閉觀察者
我想在開始測試前創建一堆對象,但觀察者會剎車。所以我想在真正的測試開始之前關閉它。
似乎有可能跨應用程序禁用所有觀察者(或特定的一個)。使用下面的代碼在構建觀察對象時將其關閉/打開。
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
只是將它們存在您的測試用例中。
例如
UserObserver.instance.stub(:after_save => true)
感謝您的回答。但是,我可以以後以某種方式拒絕嗎?當我製作所有必需的物體並準備好進行測試時? –
你能告訴我們一些你的代碼嗎,可能有另一種方法來做你想做的事情。 AFAIK你不能禁用觀察者,你可能會將回調殘留掉,但這可能不會影響觀察者。 – spullen
@spullen,'ActiveRecord :: Base.observers.disable:all'呢?它會起作用嗎? –
是的,應該。不知道你可以關閉這樣的觀察者。很高興知道。 – spullen