2010-10-18 11 views

Odpowiedz

5

Dwie opcje mogą być:

  1. No peeping toms
  2. Dodaj poniższe linie do środowiska test.rb: config.active_record.observers = []
30

no_peeping_toms wola ostrzeżenia wyjście amortyzacyjne w przypadku korzystania z Rails 3.1 i nowsze. Obecnie otwarty jest 7 pull requests, aby usunąć ostrzeżenia o odstąpieniu od umowy, jednak gem is not necessary with Rails 3.1+. Rails 3.1 dodano do ActiveModel (a zatem ActiveRecord) możliwość włączania i obserwowania obserwatorów.

Można umieścić następującą linię w spec_helper aby wyłączyć wszystkie obserwatorów na wszystkich ActiveRecord-potomnych modeli:

# spec/spec_helper.rb 
... 
RSpec.configure do |config| 
    ... 
    config.before do 
    ... 
    ActiveRecord::Base.observers.disable :all # <-- Turn 'em all off! 
    end 
end 

Można włączyć je z powrotem na selektywnie, aby przetestować ich zachowanie poprzez owinięcie działań w widowisko z Metoda enable.

# spec/models/foo_observer_spec.rb 
describe FooObserver do 
    subject { FooObserver.instance } 

    it 'notices when new Foos are created' do 
    subject.should_receive(:after_create) 

    Foo.observers.enable :foo_observer do # <- Turn FooObserver on 
     Foo.create('my new foo') 
    end         # <- ... and then back off 
    end 
end 
+0

Dzięki za wskazanie "Foo.observers.enable" – iRonin

+0

Nie ma za co! –

Powiązane problemy