ruby-on-rails – rspec测试一个控制器,将我的参数从符号更改为字符串,并打破了我的测试

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – rspec测试一个控制器,将我的参数从符号更改为字符串,并打破了我的测试前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的控制器规范中我这样做:
it "should create new message" do
  Client.should_receive(:create).with({:title => 'Mr'})
  post 'create',:client => {:title => "Mr" }
end

…在我的控制器我在做…

def create
  client = Client.create(params[:client])
end

但是,这是失败的,并显示以下错误消息:

expected: ({:title=>"Mr"})
       got: ({"title"=>"Mr"})

我想知道为什么会发生这种情况,以及如何让它工作

解决方法

这是因为你传递一个符号,而不是一个字符串.这应该解决它:
it "should create new message" do
  Client.should_receive(:create).with({:title => 'Mr'})
  post 'create',:client => {"title" => "Mr" }
end

这是一个关于它的博客:“Understanding Ruby Symbols

猜你在找的Ruby相关文章