2013-06-26 17 views
7

imperative and declarative cucumber steps arasındaki farkı anlıyorum, ancak bununla ilgili gerçek bir dünya örneği görmedim. Her zaman özellik dosyalarımın çok ayrıntılı hale geldiğini hissediyorum.CRUD işlemlerini tanımlamak için bildirim belirtme özelliği nasıl yazılır?

  • foobars/list_foobars.feature
  • foobars/create_foobar.feature
  • foobars/view_foobar.feature
  • foobars/edit_foobar.feature
  • foobars/delete_foobar.feature
:

yaşam döngüsünün her adım için bir salatalık özellikle karşılaşıyorum gerekir gibi görünüyor

Tek başına oluşturma özelliğinde, girilebilecek alanları, hangilerinin gerekli olduğunu, geçersiz veri girdiğinizde ne olacağını listelemek istediğiniz gibi görünüyor. Bildirmek için bir bildirim yolu bilmiyorum bu. Elbette sonraki özelliklerde, bir tane oluşturmak için tüm adımları atmak yerine Given a foobar exists diyeceksiniz.

Uygulamanızın davranışını açıklarken ne kadar ayrıntılı gider? Kabul edilebilir bir şekilde tamamlandığını düşündüğünüz özellik dosyaları için bazı örnekler sağlayabilir misiniz?

# foobars/edit_foobar.feature 
Feature: As a user, I want to edit a Foobar, so I can Baz 

Scenario: Validation Errors 
    Given I am logged in as a user 
    And a foobar exists 
    And I edit the foobar with invalid data 
    Then I should see validation errors 

Bunu biz dışarı istediğini yakalar düşünüyorum:

cevap

4

Ben bu yüzden geçersiz veriler içeren bir foobar düzenleme için bir hikaye var varsayarak, insan okunabilir salatalık testleri tutmak ister, ben bir senaryo gibi isterdim hikayenin, hangi alanların düzenleneceği, hangi düğmelerin gönderileceği vb. ile uğraşmak zorunda kalmadan, olası tüm durumları test etmemektedir, ancak bunlar gerçekten testler yoluyla test edilmelidir. ayarlanır ve denetleyici, flash mesajlarının ayarlandığını veya hataların sunulduğunu test ettiklerini test eder.

Scenario: Successful Edit 
    Given I am logged in as a user 
    And a foobar exists 
    And I edit the foobar with valid data 
    Then I should see the valid data 

Bazı insanlar testin kendisi bir parçası olarak geçerli veriler belirtmek isteyecektir, ama ben şahsen senaryoları tutmak için adım tanımları bu temsilci tercih:

diğer senaryolar benzerdir temiz. Altın kasanın çalıştığından emin olmak için sadece bir örneğe ihtiyacınız vardır, çünkü bu, tüm form alanlarının çalışıp çalışmadığını test etmek için uygun bir yer değildir (ve her bir alanı belirtirseniz bir bakım baş ağrısına dönüşecektir).

+0

İlginç, teşekkürler! Takip eden soru: iş mantığını iletmek için salatalık özelliklerini hiç kullanıyor musunuz? Geçerli veya geçersiz veri olarak adlandırılan tek bir adımı atmak, önemli bir iş mantığı parçası olabilecek davranışları gizlemek gibi görünüyor. Örneğin, iş mantığı hangi alanların gerekli olduğunu belirleyebilir, böylece "gerekli alanları dolduruyorum" gibi bir adım yeterince iletişim kuramayabilir. Düşünceler? – Andrew

+2

Bazı durumlarda (geçerli yasalara uyum için olduğu gibi) belirli bir alan gerektirmesi için geçerli iş nedenleri vardır, ancak çoğu zaman bir kişinin bir alanın depolanmasını istediğinde, bunun arkasında başka bir hikaye olduğunu (pazarlama materyallerini e-postayla göndermek istiyorum) veya kullanıcıların e-posta ile giriş yapabilmelerini istemek). İkinci durumda, gereken alan bir uygulama detayıdır, bu yüzden ünite testi yapılmalıdır. Eski durumda, özellikle ürün sahibi ile iletişim kurmak için salatalık testlerini kullanıyorsanız, belirli olmak için zorunlu bir test yazmak isteyebilirsiniz. –

+0

Bu soruya cevap vermiyor. –

-1

Belki de bu özelliği Salatalık kullanarak test edemiyorum, sadece Özellik bölümünde bir yorum yapın.

Alternatif belki bir böyle bir şey yapabilirsiniz:

# categories.feature 

Scenario: Manage categories 
    Given I want to manage categories 
    When I <crud_type> a category 
    Then I should be taken to the listing page 

    Examples: 
     | crud_type | 
     | create | 
     | edit  | 
     | delete | 

Scenario: View category 
    Given I want to view a particular category 
    When I click on a category in the category list 
    Then I should see that category's view page 
+0

Reddetmeyi açıklamak ister misiniz? –

İlgili konular