私は最近 RoR と TDD の学習を開始しましたが、このシナリオを処理する最善の方法を見つけるのに苦労しています。
同じ検証を共有する 2 つのフィールドを持つ ActiveRecord モデルがあります。
同様のフィールドに対して同じテストを利用する RSpec テストを作成するにはどうすればよいですか?
「共有例」は、このシナリオで利用する有望な機能のように見えましたが、モデル全体をテストする必要があり、個々のフィールドを共有例に渡すだけであるため、機能していないようです。
以下は私の失敗した試みです:
describe Trip do
before do
@trip = trip.new(date: '2013-07-01', city_1: "PORTLAND",
city_2: "BOSTON")
end
subject { @trip }
shared_examples "a city" do
describe "when not uppercase" do
before { city = city.downcase }
it { should_not be_valid }
end
end
describe "city_1 must be valid" do
it_should_behave_like "a city" do
let!(:city) { @trip.city_1}
end
end
describe "city_2 must be valid" do
it_behaves_like "a city" do
let!(:city) { @trip.city_2}
end
end
end
これは、city 変数を更新してもトリップ モデルが更新されないため、失敗します。それを動的にモデルに結び付ける方法はありますか?
ところで、各フィールドの下に貼り付けると、すべてのテストが単独で機能します。shared_example のコンテキストでは機能しません。
ガイダンスをいただければ幸いです。