Raylar 3.1, RSpec: test modeli doğrulamaları
Raylar TDD ile yolculuğum başladı ve bir çözüm bulmak için görünmüyor olabilir bu model doğrulamaları için test ile ilgili küçük bir sorun haline çalıştırmak. Diyelim Kullanıcı bir modeli var ki
class User < ActiveRecord::Base
validates :username, :presence => true
end
ve basit bir test
it "should require a username" do
User.new(:username => "").should_not be_valid
end
Bu doğru varlığını doğrulama, ama eğer daha spesifik olmak istersem HANGİ TESTLER? Örneğin, hataları test full_messages.. nesne
it "should require a username" do
user = User.create(:username => "")
user.errors[:username].should ~= /can't be blank/
end
İlk girişimi hakkında endişe (should_not be_valid kullanarak) RSpec açıklayıcı bir hata iletisi oluşturmak zorunda kalmayacak. Sadece "geçerli beklendiği? yanlış dönmek, doğru." Ancak, ikinci test örnek küçük bir dezavantajı var: bu hataları almak için yeni bir yöntem yerine yöntem oluşturmak nesne kullanır.
Benim testler ne testi yaptıklarını hakkında daha spesifik olmak istiyorum, ama aynı zamanda bir veritabanı dokunmak zorunda değil.
Kimse herhangi bir giriş var mı?
CEVAP
İlk kötü bir isim olduğunu söylemek isterim.
İkinci olarak, seni TEBRİK ederim geri aramaz bir kez başlayınca söz veriyorum ROR ile TDD içine çaba.
Basit, hızlı ve kirli çözüm bu gibi testler her önce geçerli yeni bir model oluşturmak için:
before(:each) do
@user = User.new
@user.username = "a valid username"
end
AMA benim önerim senin için geçerli bir model oluşturacak tüm modeller için fabrikalar otomatik olarak ayarlanır ve daha sonra bireysel özellikler ile karışıklık ve doğrulama görebilirsiniz. Bunun için FactoryGirl kullanmak gibi:
Test şöyle bir şey görünecektir kurmak aldıktan sonra temel olarak:
it "should have valid factory" do
FactoryGirl.build(:user).should be_valid
end
it "should require a username" do
FactoryGirl.build(:user, :username => "").should_not be_valid
end
Tabi ya, ve burada benden daha iyi açıklar o a good railscast:
iyi şanslar :)
GÜNCELLEME: version 3.0 fabrika kızı sözdizimi değişti. Örnek kodum bu yansıtacak şekilde değiştirildi.
Kurulum gem (Raylar)test etmek için RS...
nasıl parametreler raylar bir kumanda ...
Nasıl yeni bir Rails uygulaması oluştu...
Rspec, Raylar: nasıl denetleyicileri ö...
test dosya upload rspec kullanarak ray...