2010-10-18 25 views

Trả lời

5

Hai tùy chọn có thể là:

  1. No peeping toms
  2. Thêm dòng sau vào môi trường test.rb của bạn: config.active_record.observers = []
30

no_peeping_toms chí cảnh báo sản lượng deprecation khi được sử dụng với Rails 3.1+. Hiện tại, bạn có 7 pull requests mở để xóa các cảnh báo không dùng nữa, tuy nhiên gem is not necessary with Rails 3.1+. Rails 3.1 được thêm vào ActiveModel (và do đó ActiveRecord) khả năng bật và disable người quan sát.

Bạn có thể đặt dòng sau trong spec_helper để tắt tất cả các quan sát viên trên tất cả các mô hình ActiveRecord-hậu duệ:

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

Bạn có thể bật lại trên một cách chọn lọc để kiểm tra hành vi của họ bằng cách gói hành động trong thông số kỹ thuật của bạn với enable phương pháp.

# 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

Cảm ơn bạn đã trỏ đến 'Foo.observers.enable' – iRonin

+0

Bạn được chào đón! –

Các vấn đề liên quan