Hash / params causing errors


Hey everyone,

I’m trying to spec a controller and I can’t seem to get a test to pass
because rspec seems to see the difference between params I expect and
params that I pass. However, this comes from the same params
variable. What should I do to get this to work?

Spec::Mocks::MockExpectationError in ‘UsersController handling POST
/users should create a new user from params’
Mock ‘Class’ expected :new with ({:email=>“removed_email_address@domain.invalid”}) but
received it with ({“email”=>“removed_email_address@domain.invalid”})

Code is here: http://pastie.org/309263

Ramon T.


On Thu, Nov 6, 2008 at 9:53 PM, Ramon T. removed_email_address@domain.invalid

received it with ({“email”=>“removed_email_address@domain.invalid”})
expected {:email=>“removed_email_address@domain.invalid”}
got {“email”=>“removed_email_address@domain.invalid”}

Rails is converting what’s really passed (with a Symbol key) to a
String key. It’ll work if you expect the String instead.


A bit dryer:

@params = { “login” => “loginator”, “email” => “removed_email_address@domain.invalid” }


Ramon T.


Thanks for you reply. With what you said I ended up doing this

before do
@user = mock_model(User, :to_param => “1”, :login => “loginator”,
:email => “removed_email_address@domain.invalid”, :save! => true)
@params = { :login => “loginator”, :email => “removed_email_address@domain.invalid” }

it “should create a new user from params” do
User.should_receive(:new).with({“login” => “loginator”, “email” =>