1

わかりましたので、このバグを修正するために何日も探していましたが、答えが見つからないようです. rspec を使用して Rails アプリをテストしようとしています。具体的には、現在コントローラーのテストを行っています。

私のコントローラーにはメソッドがあります

def update

  changes = @match_preference.changes

  ...

  if changes.values.collect(&:first).any?(&:nil?)
    flash[:notice] = 'Hello'
  end

  ...

end

私のテストファイルにはこれがあります

before :each do 
  @match_preference = FactoryGirl.create :match_preference
end

it "should do something on first change" do
  # Line I have been changing a lot
  @match_preference.changes.values.collect.stubs(:any?).returns(true)
  post :update
  flash.should_not be_nil
end

また、その行を stub_chain と他の多くの可能な答えに置き換えてみました。問題は機能にあることがわかりましたか?その関数を削除すると、collect の戻り値を変更でき、常に機能します。なぜ何もしないのですか?戻り値を設定できますか?

問題が @match_preferences にないことはわかっています。これは、テストの他の場所で使用し、機能するためです。

このコードからエラーは発生しません。戻り値が正しく変更されていないようです。

4

2 に答える 2