2012-12-28 11 views
7

RSpec'le birlikte Cucumber ve TDD ile BDD kullanarak geliştirmek istediğim oldukça basit bir Rails uygulaması var . Şu anda, bir onaylama hatası nedeniyle bir Düzenleyici'nin yeni bir örneğinin (sahip olduğum model) oluşturulamamasını kontrol etmek istediğim bir sınamada asılıyorum. Hataların, oluşturulacak nesnenin dizisi olup olmadığını kontrol etmek istiyorum, böylece hata mesajlarının bunların görüntülenmesinde gösterildiğinden emin olabilirim.Raylar RSpec: Denetleyici Sınama, hata olup olmadığını denetleme Doğrulama hatası nedeniyle yeni kayıt oluşturulamıyorsa, model dizisi girişlerle doldurulur.

OrganizersController açıklayan render_views ben RSpec 2 ve salatalık-raylar ile Raylar 3.2.9 dayalı gelişmekte am

describe "POST 'create'" do 

    describe "with invalid arguments" do 
    before(:each) do 
     request.env["HTTP_REFERER"] = organizers_new_path 
     @organizer_args = { :name => "" } 
    end  

    it "should return a non-empty list of errors" do 
     post 'create', :organizer => @organizer_args 
     @organizer.errors.empty?.should_not be_true 
    end 
    end 
end  

uç 'spec_helper' do gerektirir.

Herhangi bir öneri takdir edilir. Teşekkürler!

cevap

14

Sen denetleyici eylemden örnek değişkeni almak için atar yöntemi kullanmalısınız:

assigns(:organizer).errors.empty?.should_not be_true 
11

son tercih sözdizimi: cevap çocuklar için

expect(assigns(:organizer).errors.empty?).to_not be_true 
+0

'true' (boşluk yok) – Tobi

1

teşekkürler ama önermek istiyorum biraz daha güzel söz dizimi: (soruya ilgisiz) expect(assigns(:organizer).errors).to_not be_empty

Temel olarak, ? ile biten bir yönteminiz olduğunda, be_ ile başlayan ilgili rspec eşleştiricisine sahip olursunuz. 1.odd? #=> true expect(1).to be_odd

İlgili konular