RSpec ve Cucumber, her ikisi de test çerçeveleri. RSpec, geleneksel Birim Testini içerir (bu, uygulamanın geri kalanından ayrı olarak bir sınıfın veya uygulamanın bir kısmının test edilmesi anlamına gelir. Böylece modeliniz, modelinizin yapması gerekeni yapar, denetleyici yapması gerekeni yapar vb.).
Hem RSpec hem de Salatalık, Kabul Testi için kullanılır (Kime sorduğunuza bağlı olarak buna ATDD, BDD, Örneklerle Spesifikasyon, vb. Denir). Bunlar, iş vakası odaklı Entegrasyon Testleridir, yani bir kullanıcının uygulamayı kullanma ve tam Rails yığınını kullanma şeklini simüle ettikleri anlamına gelir, böylece uygulamanızın farklı bölümlerinin birlikte çalışma biçimiyle ilgili sorunlar, birim testinin olmayacağı şekilde bulunabilir. bulabilirsiniz.
RSpec ve Cucumber arasındaki temel fark, iş okunabilirlik faktörüdür. Hıyar'ın ana teması, spesifikasyonun (özelliklerin) test kodundan ayrı olmasıdır, böylece ürün sahipleriniz kodu kazmak zorunda kalmadan spesifikasyonu sağlayabilir veya inceleyebilir. Bunlar, Cucumber'da oluşturduğunuz .feature dosyalarıdır. RSpec'in benzer bir mekanizması vardır, ancak bunun yerine, iş özelliğini içeren bir Tanımla, Bağlam veya It bloğuyla bir adımı tanımlarsınız ve ardından bu ifadeyi yürüten koda hemen sahip olursunuz. Bu yaklaşım, geliştiricilerin birlikte çalışması biraz daha kolay, ancak teknik olmayan kişiler için biraz daha zordur.
Hangisini kullanmalı? Tek geliştirici ve ürün sahibi sizseniz, o zaman RSpec'e bağlı kalırım, teknik bir kişinin anlamasının daha kolay olduğunu hissediyorum, işleri kapsamlı ve kontrol altında tutmak için birkaç avantaj sunuyor ve sizi test için RegEx'lerle uğraşmaktan kurtarıyor adımları tekrarlayın. Bunu bir müşteri için oluşturuyorsanız ve Spesifikasyon ile ilgili olarak uygulamalıysa, Kabul Testiniz için Salatalık ile gidin ve Birim Testleri için RSpec'i kullanın.
Sadece ikisi arasındaki temel 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 dizisi, RSpec ile yola çıkmak için mükemmeldir.