Ruby on rails RSpec新手:设计/Cancan导致其他工作控制器规范失败
我正试图通过RSpec控制器规范。它与scaffold生成的规范几乎相同,只是用户先登录到designe。如果我从控制器(检查权限)禁用“加载和授权资源”,一切正常。但是如果我把线路放回去,它会失败: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
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