2013-03-02 21 views
98

Rspec'in feature specs ve request specs arasındaki kavramsal fark nedir? özellik Spec DokümanlarRSpec: Bir özellik ile istek özellikleri arasındaki fark nedir?

:

Özelliği gözlük bir uygulama üzerinden işlevsellik dilimleri egzersiz anlamına üst düzey testlerdir. Uygulamayı yalnızca web sayfaları olmak üzere yalnızca harici arabirim üzerinden sürmelidirler.

ayrıntılı bilgiler Rails'in entegrasyon testleri etrafında ince bir sargı sağlamak ve yönlendirme de dahil olmak üzere (Raylar tarafından sağlanan), tam yığını aracılığıyla davranışları sağlamak için tasarlanmıştır ve:

ve talep özellikleri için

stubbing olmadan (bu size kalmış). istek özellikleri ile şunları yapabilirsiniz:

  • birden fazla oturumda birden çok istek belirtmek
  • Birden çok kontrol genelinde birden isteklerini belirtmek tek isteği belirtmek

O özellik gözlük kullandığını biliyoruz Capybara ve özellikleri istekleri yapmayın. Ama bu pek farklı kavramları zorlaştırıyor.

cevap

134

Kavramsal fark, genellikle bir kullanıcı hikayesini test etmenizdir ve tüm etkileşimler kullanıcı arayüzü üzerinden sürülmelidir. Capybara'nın geldiği yer burasıdır. Talep şartnamesi hala uygulamanızın davranışını test etmekte ve kabul testinin yapılabileceği konusunda okunabilirlik beklentisine sahip değildir. Bu nedenle, kabul testleri için geliştirilmiş sözdizimi için özellik var.

Teknik farklılıklar arasında, özellik özelliklerinin, Ray özelliklerinin entegrasyon testleri yapılmasına karşın, özellik özelliklerinin bulunmaması gerekir. Bu, yanıtlama yöntemine göre alma, gönderme, ekleme, silme ve yanıtlama yöntemlerini kullanabileceğiniz istek özelliklerine sahiptir. Özellik özellikleriyle, tüm etkileşimleri tarayıcıdan geçirmeli ve sayfaya karşı ziyaret etme ve onaylama gibi yöntemleri kullanmalısınız.

Github'da rspec raylarının kaynak kodundaki feature_spec.feature öğelerini okumanızı öneririz. Umarım bu yardımcı olur.

+2

Bu nedenle, hem özellik hem de özellik belirtme yöntemini kullanmanızı mı yoksa bir tanesini mi yoksa diğerini mi öneriyorsunuz? (TDD'ye yeni ...) – robertwbradford

+2

Her ikisini de kullanıyorum @robertwbradford. Testlerimi dışarıda kullanmak için test özelliklerini kullanıyorum - kullanıcı deneyimini test ediyorum ve daha sonra birim testleri kullanarak işlevselliği yapıyorum. Yanıtları test etmek için istek özelliklerini kullanıyorum - ör. bir sessions_spec içinde '' GET/login' 'ifadesiyle' '' '' '' '' '' '' '(response.status) '' gibi '' bloklar '' '' '' '' '' 'bir ifadesi olabilir. yeni) ', veya bir' '' POST/oturumları' 'açıkla '' geçerli kimlik bilgisiyle bir 'bağlam' ',' 'engelle bekle (yanıtla). redirect_to (kullanıcı)' ve 'follow_redirect !; (response.body) .to dahil ("İmzalı") '' –

+5

Ve denetleyici özelliklerini de kullanıyor musunuz? Talep özelliklerinde test ettiğiniz ile normalde denetleyici özelliklerinde test edilenler arasında bir miktar kopya var gibi görünüyor. – Ernesto

İlgili konular