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

我的问题如下:我必须传递一个 ID 才能使用方法 load_and_authorize_resource à cause de la ligne 139 dans ce 代码: https ://github.com/ryanb/cancan/blob/2.0/lib/cancan/controller_resource.rb检查参数中是否有 ID。

如何解决?

谢谢!

编辑:换句话说:变量@project 没有被方法load_and_authorize_resource 删除,因为没有ID,并且可以检查是否有ID 来查找模型。

4

1 回答 1

0

我不太确定我是否理解您的要求,但您可以执行以下操作:

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

Project.find无论该参数是什么,都要取消对它的任何调用都需要一个参数。这有帮助吗?

于 2012-06-16T13:30:26.977 回答