0

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
4

1 に答える 1