मेरी रेल 3 आवेदन में, मैं एक RSpec कल्पना है कि गारंटी नहीं है कि मान मान्य मानों की सूची के भीतर है तो दिए गए फ़ील्ड (उपयोगकर्ता मॉडल में भूमिका) के व्यवहार की जांच करे।पुन: उपयोग RSpec व्यवहार सत्यापन
अब मेरे पास एक और मॉडल के लिए एक ही मॉडल है, जो वैध मानों के दूसरे सेट के साथ है। मैं चर को बदलने, प्रतिलिपि बनाने और चिपकाने के बजाय सामान्य कोड निकालना चाहता हूं।
मुझे आश्चर्य है कि यह साझा उदाहरण या अन्य आरएसपीसी पुन: उपयोग तकनीक का उपयोग करने का मामला होगा।
यहाँ प्रासंगिक RSpec कोड है:
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
सबसे अच्छा मामले इस कोड को पुन: उपयोग करने के लिए, लेकिन भूमिका (क्षेत्र सत्यापित किया जा रहा है) और उपयोगकर्ता :: भूमिका (के संग्रह निकालने होगा क्या वैध मान) इस कोड में पारित पैरामीटर में?
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
लेकिन क्या अपने विचार के बारे सुखाने के लिए कुछ specs..I लगता है कि यह बहुत ज्यादा है:
कमाल, धन्यवाद। – kolrie