2012-08-01 15 views
91

6 aylık Rails geliştirme deneyimim var. Kimlik doğrulama ve yetkilendirme ve postgresql db ile şu anda kullanımda olan bir web uygulaması oluşturdum.RSpec ve Salatalık arasındaki fark nedir?

İkinci Rails uygulamasına geçiyorum, ancak bu sefer öğrendikten sonra, TDD'yi kullanarak geliştirmek istiyorum. Çünkü bunu ölçeklendirmek ve hataları düzeltmek çok daha kolay. Gelişmesi yavaş ama uzun vadede ele alınması daha kolay.

Rspec ve Salatalıktan duydum ama onlar tarafından iyice karıştı.

ben fark RSpec ve salatalık ve ne için kullanılır arasına ne olduğunu bilmek istiyorum.

Ayrıca, bilinmesi faydalı olacak bir test çerçevesi gerçekten gerekli olup olmadığını (aynı zamanda yegane geliştiricisi) bir acemi perspektifinden.

+4

Minitest sizi daha da şaşırtmak için bir seçenek de olabilir –

+2

veya hatta capybara –

+5

Capybara gerçekten de test çerçevelerinin herhangi birinde, kendi içinde ve dışında bir çerçevede kullanılabilecek bir sürücüdür.Watir-webdriver ve Selenium, benzer işlevleri yerine getiren iki şeydir, ancak gerçek bir tarayıcıyı sürdürebilir ve Capybara'dan daha yavaştır. Rack :: Test – DVG

cevap

269

RSpec ve Salatalık, her ikisi de test çerçeveleridir. RSpec, geleneksel Birim Testini (yani uygulamanın bir sınıfını veya bir kısmını uygulamanın geri kalanından bağımsız olarak test etmek anlamına gelir. Bu nedenle modeliniz, modelinizin yapması gereken şeyi yapar, kontrolörün yapması gereken şeyi yapar, vb.).

RSpec ve salatalık hem (kim soracak bağlı vb ATDD, BDD denir, Örnek Şartnameyi) Kabul Testi için kullanılmaktadır. Bunlar, bir kullanıcının uygulamayı nasıl kullandığını simüle ettikleri ve Rails yığınının tamamını kullandıklarından, uygulamanızın farklı bölümlerinin birlikte çalıştığı şekilde, birim testinin olmayacağı bir şekilde bulunabileceği anlamına gelen, işyeri tarafından yönetilen Entegrasyon Testleridir. bulabilirsiniz.

RSpec ve Salatalık arasındaki temel fark, iş okunabilirlik faktörüdür. Salatalığın ana çekimi, spesifikasyonun (özellikler) test kodundan ayrı olmasıdır, bu nedenle ürün sahipleriniz, kodları kazmak zorunda kalmadan belirtimi sağlayabilir veya inceleyebilir. Bunlar, Salatalık'ta yaptığınız .feature dosyaları. RSpec'in benzer bir mekanizması vardır, ancak bunun yerine, tanımlamayı, İçeriği veya İş spesifikasyonunu içeren bloğu içeren bir adımı tanımlarsınız ve sonra bu ifadeyi yürüten kodu hemen alırsınız. Bu yaklaşım, geliştiricilerin çalışmak için biraz daha kolay ama teknik olmayan insanlar için biraz daha zor.

Hangi Web sitesini kullanın? Tek geliştirici ve ürün sahibi iseniz, o zaman RSpec ile sadık kalırdım, teknik bir kişinin anlaması daha kolay olur, kapsamı ve kontrolü kontrol altında tutmak için birkaç avantaj sunar ve test için RegEx'lerle uğraşmanıza engel olur. adım. Bunu bir müşteri için yapıyorsanız ve Şartname ile ilgili olarak elleriniz varsa Kabul Testi için Salatalık ile gidin ve Birim Testleri için RSpec kullanın.

Sadece ikisi arasındaki ana fark göstermek için:

Salatalık:

#articles.feature 
Given an article exists called "Testing Demonstration" 
When I visit the list of articles 
Then I should see an article called "Testing Demonstration" 

#article_steps.rb 
Given /^an article exists called "(.+)"$/ do |title| 
    FactoryGirl.create(:article, title: title) 
end 
When /^I visit the list of articles$/ do 
    visit articles_path 
end 
Then /^I should see an article called "(.+)"$/ do |title| 
    page.should have_content title 
end 

RSpec

describe "Articles" do 
    let(:article) { FactoryGirl.create(:article) } 
    context "Index Page" do 
    before { visit articles_path } 
    it { page.should have_content article.title } 
    end 
end 

Bu blog serisi elde RSpec ile devam mükemmel: http://everydayrails.com/2012/03/12/testing-series-intro.html

+15

Bu mükemmel bir cevaptır. Zaman ve tavsiye için çok teşekkür ederim. Okuduğum raylar üzerinde pek çok kitap var, ama şimdiye kadar bu türden farklılıklar yapan bir tane bulamadı ve hangisi olduğunu açıklıyor. Tekrar teşekkürler – banditKing

+1

Bu cevabı ihtiyaç duyan herkese daha az tavsiye edemedim. Detaylar için teşekkür ederim! – Ikon

+1

Bu gerçekten, yığın akışındaki en kapsamlı ve anlaşılması kolay cevaplardan biridir (harika bir örnekle tamamlayın!) – Sheharyar

İlgili konular