私はまだテストを書くrspecの方法に頭を悩ませていませんが、このテストで私が間違ったことを理解するのに役立つことを感謝します。
describe Source do
describe "Upcase name" do
names = {'bob' => 'Bob',
'edward jones' => 'Edward Jones'
'Edward jones' => 'Edward Jones'}
names.each do |name,expect|
before { @source = Source.create(name: name) }
after { @source.destroy! }
it "source #{name} should be #{expect}" do
subject { @source }
@source.name.should == expect
let!(:find) do
Source.find_by_proper_name(expect)
end
it "should find" do
should == find
end
end
end
end
end
ソースモデルの名前列に一意の制約があります。
テストのすべての反復は、固有の違反による失敗として返されます。(反復ごとに1つのモデルしか作成されないと思っていましたが。
3つの真ん中を取り出して、一度にすべてを作成するとすべての名前が一意になるようにすると、@ sourceがすべてのテストの最後の値に等しいため、テストは失敗します。
基本的に私はテストを書くためのDRYの方法が欲しい
Source.create(name: "bob").name.should == "Bob"
Source.create(name: "edward jones").name.should == "Edward Jones"
Source.create(name: "Edward jones").name.should == "Edward Jones"
どうすればいいですか?