1

私がコントローラーをテストするとき、私はこの種のコードを持っています:

describe "GET 'show'" do
  let!(:comment) { build_stubbed(:comment) }
  before(:each) { Project.stubs(:find).returns(project) } 

  it "render show template" do
    get 'show', id: project.id
    should render_template('show')
  end

  it "create a new comment" do
    Comment.expects(:new).returns(comment)
    get 'show', id: project.id
  end
end

私の問題は次のとおりです:メソッドload_and_authorize_resourceを使用するにはIDを渡す必要がありますàcausede la ligne 139 dans ce code: https ://github.com/ryanb/cancan/blob/2.0/lib/cancan/controller_resource.rbパラメータにIDがあるかどうかをチェックします。

それを修正する方法は?

ありがとう!

編集:言い換えると、IDがなく、モデルを見つけるためのIDがあるかどうかを確認できるため、変数@projectはメソッドload_and_authorize_resourceによってインスタンス化されません。

4

1 に答える 1

0

あなたが求めていることを理解しているかどうかはよくわかりませんが、次のようなことができます:

before(:each) { Project.stubs(:find).with(anything).returns(project)

Project.findそのパラメーターが何であれ、単一のパラメーターを取る呼び出しをスタブ化するには。それは役に立ちますか?

于 2012-06-16T13:30:26.977 に答える