为什么在使用rspec测试控制器时,response.body是一个字符串实例

时间:2012-11-04 21:32:47

标签: ruby-on-rails-3 rspec

在我的控制器的rspec测试中,响应的主体始终是ActiveDispatch :: Response实例的字符串表示。

=> #<ActionController::TestResponse:0x00000007863010
 ...
 @body=["#<ActionDispatch::Response:0x00000007530d70>"],...

有问题的控制器规格:

it 'should not allow invalid email' do
     json = { :format => 'json', :patron_profile => { :email =>   'bogusemail.com', :password => 'password' } }
     post :create, json
     response.status.should eq(302)
     response.body.to_json.should be_json_eql(%({ 'error' : 'error message'}))
end

什么可能导致response.body成为上面显示的ActionDispatch字符串?

1 个答案:

答案 0 :(得分:2)

问题2074Devise的Github帐户上似乎是导致此问题的原因。

截至2012年11月4日,解决方法是在Gemfile中使用Devise的git master分支。