2010-03-09 20 views
5

Veritabanı görünümleri Rspec'te nasıl test edilebilir? Her senaryo bir işlemin içine sarılır ve veri, veritabanına kalıcı hale getirilmiş gibi görünmez (benim durumumdaki MySQL). Görünümüm boş bir sonuç kümesiyle geri dönüyor, çünkü işlemlerde kayıtlardan hiçbiri kalmıyor. Spesifikasyonumda bir hata ayıklama noktası ayarlayarak ve veriler hata ayıklanırken bir veri tabanı istemcisiyle kontrol ederek kayıtların depolanmadığını doğrularım.Rspec> test veritabanı görünümleri

Görünümü sonlandırmadan önce düşünebilmemin tek yolu, işlemi senaryo sona ermeden önce yapabilseydim ve sonra da senaryo tamamlandıktan sonra veritabanını temizler. Bunu nasıl başaracağını bilen var mı yoksa daha iyi bir yolu var mı?

Teşekkürler

cevap

2

Sanırım anladım. işlemleri kullanmayın için, belirtmek gerekir:

self.use_transactional_fixtures = false 

Ayrıca her senaryoya sonra ne oluşturmak temizlemek için emin olmalıdır.

describe Attendee do 
    self.use_transactional_fixtures = false 

    def clear_all 
    ActiveRecord::Base.connection.execute('delete from users') 
    ActiveRecord::Base.connection.execute('delete from contact_info') 
    ActiveRecord::Base.connection.execute('delete from events') 
    end 

    before(:each) do 
    # create some test users 
    @event = Factory.create(:event) 
    @event.publish! 
    @user = Factory.create(:user) 
    @user_2 = Factory.create(:user_2) 
    end 

    after(:each) do 
    clear_all 
    end 

    it "should list have attendees in the directory" do 
    # in my case, Attendee class uses my attendees database view 
    Attendee.count.should be 2 
    end 
end 
İlgili konular