[rspec-users] mock.with(Hash) expects an Array ?

Francois Beausoleil francois.beausoleil at gmail.com
Mon Jan 29 00:12:23 EST 2007


Hi all,

I looked at the open issues on the bug tracker, but couldn't find
anything related to this.  I also searched the archives.  And I can't
believe someone didn't hit on this before.

Here's my spec:
context "A project owner" do
  controller_name :roles

  setup do
    controller.stub!(:current_user).and_return(@user = mock("user"))
    controller.stub!(:current_project).and_return(@project = mock("project"))
    @user.stub!(:role_on).and_return(Role.owner)
  end

  specify "can change the role of a user" do
    @project.should_receive(:roles).and_return(roles_proxy =
mock("roles proxy"))
    roles_proxy.should_receive(:find).with("17").and_return(role = mock("role"))
    role.should_receive(:update_attributes!).with(:name =>
Role.developer).and_return(true)
    role.stub!(:name).and_return(Role.developer)

    post :update, :project_id => 41, :id => 17, :role => {:name =>
Role.developer}
    response.body.should == Role.developer
  end
end

And the failure:
'A project owner can change the role of a user' FAILED
Mock 'role' expected :update_attributes! with ([:name, "developer"])
but received it with ({"name"=>"developer"})
(eval):3:in `update_attributes!'
/home/francois/src/smrty2/config/../app/controllers/roles_controller.rb:11:in
`update'
./spec/controllers/roles_spec.rb:35:

Looks like the call to #with changed the Hash to an Array.

Can anyone else confirm this ?  This is on 0.7.5.1.

Thanks !
-- 
François Beausoleil
http://blog.teksol.info/
http://piston.rubyforge.org/


More information about the rspec-users mailing list