0

確かに私は何かが欠けている...しかし何!?

私の仕様では

User.should_receive(:find).with("1").and_return(@user)

そして私のコントローラーで

User.find(params[:id])

青信号...正しい...

しかし、たとえば最初に別の方法を使用してコントローラーを変更した場合:

User.first

あるいは

User.all

私も青信号を取得します...次のようなエラーを期待していました

expected: 1 time
received: 0 times

その振る舞いを理解するためのヒントを誰か教えてもらえますか?

どうもありがとう

編集

ここで、この問題に関する詳細情報を見つけることができます: https://gist.github.com/3848429#file_user_controller_spec.rb

編集2

私の仕様は今ですが、メソッドが各 #find を呼び出していることを確認する必要があります...

describe "GET #show" do
  before(:each) do
    @user = mock_model(User)
    should_authorize(:show, @user)
  end

  it "assigns the requested user to @user" do
    User.should_receive(:find).with("1").twice.and_return(@user)
    get :show, id: "1"
  end
  it "renders the :show template" do
    get :show, id: "1"
    response.should render_template :show
  end
end
4

1 に答える 1

1

should_receive は基本的にスタブのように機能するため、両方が必要だUser.stub!(:find)...とは思いません。User.should_receive(:find)...最初のものを削除して、動作が変わるかどうかを確認します。

于 2012-10-09T12:38:23.793 に答える