Railsアプリケーションへのrspecテストの作成に問題があります。
次の関数を使用して、空のテキストを持つすべてのMyModelのインスタンスを取得するMyModelというモデルがあるとします。
self.searchEmtpy:
self.where(:text => nil)
end
次のテストを定義しました。このテストでは、テキストが空の新しいMyModelが前の関数によって返される必要があることを確認します。モデルの作成にはFactoryGirlを使用しています。
describe "get empty models" do
before do
@previousModels=MyModel.searchEmtpy
@newModel=Factory(:myModel, :text => nil)
end
it "new empty models should appear" do
currentModels=MyModel.searchEmtpy
(previousModels << @newModel).should eq(currentModels)
end
end
テストは非常に簡単ですが、機能しません。理由はわかりませんが、出力からわかるように、「should」行に、previousModelsにすでにnewModelが含まれているため、テストは失敗します(@newModelが2回含まれています。I ' m何か明らかなものが欠けていますか?「それ」の中の指示は順番に呼び出されていませんか?
明確にするために、次のテストは失敗しません。
describe "get empty models" do
before do
@previousModels=MyModel.searchEmtpy
@newModel=Factory(:myModel, :text => nil)
end
it "new empty models should appear" do
currentModels=MyModel.searchEmtpy
(previousModels).should eq(currentModels)
end
end