2010-04-08 15 views
7

Tamam, bu yüzden bloklar ile doğrudan bağlantılı çok garip bir konuya girdim. Watir ve RSpec ile bir entegrasyon testi yapıyorum. Kullanıcının bir girişi yapıp yapamayacağını kontrol etmek için basit bir test için, db içinde factory_girl aracılığıyla bir 'kullanıcı' kaydı oluşturuyorum. Bir tarayıcı arayıp kullanıcı giriş çalıştığında nasıl do stuff yılındaRSpec: önce (: all) ile öncesi arasındaki farklar (: her biri)

before(:each) do 
    @user = Factory(:user) 
end 

if "should perform a login" do 
    # do stuff 
end 

:

yüzden aşağıdaki kodu koydu. Ne yazık ki, bir şekilde bunu yapamaz - "Kullanıcı adı geçerli değil".

Bazı araştırmalardan sonra, before(:all) bloğunda kullanıcı oluşturmak için kodu koyarsam, her şeyin sihirli olarak çalıştığı keşfedildi. O nasıl? Bu bağlamda :all ve :each arasındaki fark nedir? Ayrıca, aslında test gövdesinde kullanıcı oluşturmak için kod koyarsanız, hala çalışmıyor (yani, kullanıcı bir şekilde DB'ye veya başka bir şeye eklenmemiş).

cevap

3

Muhtemelen işlem fikstürler etkin hale getirdiği, böylece her RSpec örnek sarılır işlem içinde veritabanı değişiklikleri görmek gelmez Watir süreci.

işlemsel özellikleri devre dışı bırakmayı deneyin ve temiz bir sayfa almak için database cleaner gibi bir şey kullanmak her örnekten önce.

İlgili konular