2009-05-28 21 views
7

Bir girdi alanının, alanımın boş olduğu fabrikalarımdan biriyle eşleşip eşleşmediğini görmek için denemeye çalışıyorum.Boş bir giriş alanını nasıl test edersiniz?

address => {:first_name => '', :last_name => ''} 

giriş alanına ne ben bu kullanıyorum kontrol: İlk adı boşsa

assert_select '#first_name[value=?]', address.first_name 

Bunun dışında çalışmaz. Bu hatayı alıyorum ve test başarısız oluyor.

Expected at least 1 element matching "#first_name[value='']", found 0. 
<false> is not true. 

Oluşturulan kod değer özniteliğine sahip olmadığı için bu mantıklıdır. Bir giriş alanının değerini doğrulamak için daha iyi bir yol var mı?

Şimdilik bunu test etmek için adres alanının boş olup olmadığını kontrol edebilir ve değer niteliği olmayan bir girdi alanı olup olmadığını kontrol edebilirim. Ama bu dağınık ve verbose. ama çalışan evrensel çek

Örnek uzun: Ben kullanıyorum

if address.first_name.blank? 
    assert_select '#first_name[value]', 0 
    assert_select '#first_name[type=text]', 1 
else 
    assert_select '#first_name[value=?]', address.first_name 
end 

İlgili Bilgiler:
hpricot 0.8.1
Nokogiri 1.1.1
Raylar 2.2.2
Thoughtbot -Shoulda 2.0.5
Webrat Belki 0.4.1

+0

Olası kopyalar (http [bir giriş elemanı Raylar testlerinde Ruby boş olduğunu iddia Nasıl]: // stackoverflow.com/questions/6308158/how-to-assert-that-an-input-element-is-empty-in-ruby-on-rails-tests) – jasondoucette

cevap

1

kullanabilirsiniz:

assert_select "#first_name" do 
    assert_select "[value=?]", address.first_name unless address.first_name.blank? 
end 

Sanırım daha kısa sürebilirim. o test durumda tekrarlanan bir desen ise, özel bir iddianın bunu ayıklamak olabilir:

def assert_has_value_unless_blank(selector, value) 
    assert_select selector do 
    assert_select "[value=?]", value unless value.blank? 
    end 
end 

assert_has_value_unless_blank "#first_name", address.first_name 
ait
+4

Bu, giriş öğesinin boş olduğunu test etmiyor gibi görünüyor. Geçirilen değer boşsa değer özniteliği için sınama atlar. – harald

İlgili konular