は、私は値が有効な値のリスト内にあることを保証するために与えられたフィールド(ユーザーモデルで役割)の動作をチェックするRSpecのスペックを持っています。再利用RSpecの動作検証
もう1つ別のモデルでは、別のフィールドに同じ仕様を設定します。別のモデルには、別の有効な値が設定されています。共通のコードをコピーして貼り付け、変数を変更するのではなく、そのコードを抽出したいと思います。
共有の例または他の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
が、役割(フィールドが検証されている)とユーザー:: ROLESを(抽出有効な値)をこのコードに渡すパラメータに変換しますか?
素晴らしい、ありがとう。 – kolrie