0

データベースにデータが保存されているため、一部のテストが機能しません。FactoryGirl の create 関数は、コントローラーで定義されたすべてのものが確実に渡されるようにするためのコントローラーの手順を実行しないことがわかりました (以下のコード)。私のコントローラーが行うことの1つは、データベースに保存する前に属性をフォーマットして、配列ではなく文字列が保存されるようにすることです。たとえば、["Monday,Tuesday"] ではなく "Monday,Tuesday" です。

if Schedule.count == 0
  FactoryGirl.create(:schedule) 
end

作成機能がコントローラーのステップを実行するように before ステートメントを設定するにはどうすればよいですか?

4

1 に答える 1

0

次の行を入れることでこれを解決しました:

before { FactoryGirl.create(:default_for_overlap_schedule) }

完全なテストは次のとおりです。

describe "has schedule overlap" do
    before { FactoryGirl.create(:default_for_overlap_schedule) }

    let!(:overlap_schedule) { FactoryGirl.attributes_for(:overlap_schedule) }

    it "prompts user of error" do
        expect{ post :create, schedule: overlap_schedule  }.not_to change(Schedule, :count).by(1)
        flash[:error].should eq("Schedule has an overlap")
    end
end
于 2013-01-13T15:00:53.843 に答える