, ben değeri geçerli bir değerler listesi içinde olduğunu garanti etmek belirli bir alanda (Kullanıcı modelinde rol) davranışını kontrol eden bir RSpec spec var.Yeniden kullanım RSpec davranış doğrulama
Şimdi başka bir alan için başka bir modelde, başka bir geçerli değer grubuyla aynı spesifikliğe sahip olacağım. Değişkenleri değiştirip kopyalayıp yapıştırmak yerine ortak kodu çıkarmak istiyorum.
paylaşılan örnek veya başka bir RSpec yeniden kullanım tekniğinin kullanılması durumunun mümkün olup olmadığını merak ediyorum. İşte
ilgili RSpec kod:describe "validation" do
describe "#role" do
context "with a valid role value" do
it "is valid" do
User::ROLES.each do |role|
build(:user, :role => role).should be_valid
end
end
end
context "with an empty role" do
subject { build(:user, :role => nil) }
it "is invalid" do
subject.should_not be_valid
end
it "adds an error message for the role" do
subject.save.should be_false
subject.errors.messages[:role].first.should == "can't be blank"
end
end
context "with an invalid role value" do
subject { build(:user, :role => 'unknown') }
it "is invalid" do
subject.should_not be_valid
end
it "adds an error message for the role" do
subject.save.should be_false
subject.errors.messages[:role].first.should =~ /unknown isn't a valid role/
end
end
end
end
iyi bu kodu yeniden dava, ancak rol (alan onaylanmamaktadır) ve Kullanıcının :: ROLLERİ (toplanmasını ayıklanması ne olurdu geçerli değerler) bu koda geçirilen parametreler? Birkaç specs..I çok fazla olduğunu düşünüyorum KURU Fikriniz
shared_examples "no role" do
it "is invalid" do
subject.should_not be_valid
end
end
context "with an empty role" do
subject { Factory.build(:user, :name => nil) }
it_behaves_like "no role"
end
context "with an invalid role value" do
subject { Factory.build(:user, :name => '') }
it_behaves_like "no role"
end
Ama ne:
Şaşırtıcı, teşekkürler. – kolrie