RSpec

2012-10-28 31 views
8

ile parola uzunluğu doğrulamasının sınanması Kullanıcı modelinin 8 karakter uzunluğunda bir < parolasının bulunmasını sağlamak için bazı birim testleri yazıyorum.RSpec

class User < ActiveRecord::Base 
    ... 
    validates :password, :length =>{ 
    :minimum => 90, 
    :too_short => "password is too short, must be at least %{count} characters" 
    }, :on => :create 

end 

Ve user_spec.rb testi:

Bir kullanıcı modeli ile başladı

describe User do 
    subject { FactoryGirl.build :user } 

its(:password) { should have_at_least(8).items } 
end 

Bu aslında benim doğrulama test etmez fark Ancak, bu sadece test eder benim fabrikada şifre> 8 karakter vardı.

Geçerli olanı test etmekten farklı bir yol var mı? 0-7 karakter şifreleri için yöntem?

Benim teorim, eğer sadece 7 karakter ve birisinin yanlışlıkla kodlarını test ettiğimde, 4 karakterlik şifrelerin tamamlanmış olması durumunda, bu doğrulamanın geçerliliğini taşıyordu, ama gerçekten de amaçlanmış değildi. Bir şifrenin 8 karakterden fazla olması muhtemel (muhtemelen başka bir durumda doğru olmayabilir) ve bu yüzden 4 parolalarının yanlış olmasına neden olacak bazı kodlar olabilir.

Bu durumda, modeldeki parola doğrulamasını değiştiren kişi, yanlış bir şey yaptıklarını bilmeyecektir.

Bu gibi durumların düzgün bir şekilde nasıl TDD ile düzgün şekilde test edileceğini bilmek isterim.

+0

Sorununu anlamıyorum .. – apneadiving

cevap

2

bu sorunuza yanıt ama böyle bir şey ile güvenli düşünüyorsam bilmiyorum:

class User < ActiveRecord::Base 
    validates :password, :length => {:minimum => 8 } 
end 

describe User do 
    it "validates password length" do 
    FactoryGirl.build(:user, password: "1234567").should_not be_valid 
    FactoryGirl.build(:user, password: "12345678").should be_valid 
    end 
end 

nedeni bu test bir 4 karakterlik şifre birileri ile bildirmek için olurdu olmasıdır 4 karakterin iyi olduğunu belirten bir doğrulama kuralı belirledim, 7 iyi değil, ama 8 tamam. Kaza ile meydana gelebilecek bir şey değil.

+0

Bu zaten elimizde etkin bir şeydir. “Muhtemelen bir şey değil” demek hala mümkün ve nasıl kaçınılmaya çalışıldığını gösteriyor. Yine de teşekkürler! –