Ruby on rails RSpec新手:设计/Cancan导致其他工作控制器规范失败

Ruby on rails RSpec新手:设计/Cancan导致其他工作控制器规范失败,ruby-on-rails,rspec,devise,cancan,Ruby On Rails,Rspec,Devise,Cancan,我正试图通过RSpec控制器规范。它与scaffold生成的规范几乎相同,只是用户先登录到designe。如果我从控制器(检查权限)禁用“加载和授权资源”,一切正常。但是如果我把线路放回去,它会失败: 1) PostsController logged in administrator POST create with valid params assigns a newly created post as @post Failure/Error: post :create, :p

我正试图通过RSpec控制器规范。它与scaffold生成的规范几乎相同,只是用户先登录到designe。如果我从控制器(检查权限)禁用“加载和授权资源”,一切正常。但是如果我把线路放回去,它会失败:

  1) PostsController logged in administrator POST create with valid params assigns a newly created post as @post
     Failure/Error: post :create, :post => {'title' => 'test title'}
       <Post(id: integer, title: string, cached_slug: string, content: text, user_id: integer, created_at: datetime, updated_at: datetime) (class)> received :new with unexpected arguments
         expected: ({"title"=>"test title"})
              got: (no args)
     # ./spec/controllers/posts_controller_spec.rb:52:in `block (5 levels) in <top (required)>'
…还有规格

  describe "with valid params" do
    it "assigns a newly created post as @post" do
      Post.stub(:new).with({'title' => 'test title'}) { mock_post(:save => true) }
      post :create, :post => {'title' => 'test title'}
      assigns(:post).should be(mock_post)
    end
…以及规范中的支持材料:

before(:each) do
  @user = Factory(:admin)
  sign_in @user
end

  def mock_post(stubs={})
    @mock_post ||= mock_model(Post, stubs).as_null_object
  end

非常感谢…

尝试将CanCan升级到1.5版。我之前有过这个问题,但我想升级后它就消失了。

尝试将CanCan升级到1.5版。我之前有过这个问题,但我想升级后它就消失了

before(:each) do
  @user = Factory(:admin)
  sign_in @user
end

  def mock_post(stubs={})
    @mock_post ||= mock_model(Post, stubs).as_null_object
  end