[英]Failed testing a hash with rspec-rails
我正在构建一个简单的API,其功能之一就是必须将其版本告知用户。 然后我有一个带有版本方法的Api控制器
class ApiController < ApplicationController
def version
render :json => {version: '0.0.1'}
end
end
而且我的config / routes.rb中也有一条路由
Rails.application.routes.draw do
root 'site#index'
get 'api/version'
end
我正在使用Rspec,这是我失败的测试
it 'returns the correct version number (0.0.1 by now)' do
get :version
expect(response.body).to eq({'version':'0.0.1'})
end
碰巧我的测试失败( http://imgur.com/7MPL8RO )
1) ApiController GET #version returns the correct version number (0.0.1 by now)
Failure/Error: expect(response.body).to eq(a)
expected: {:version=>"0.0.1"}
got: "{\"version\":\"0.0.1\"}"
这里有什么意义? 我应该测试response.body.to_s还是类似的东西?
似乎我遗漏了一点,可能很简单。
response.body
返回一个序列化的json字符串,而{'version':'0.0.1'}
是一个Hash
。
您的期望应该是expect(response.body).to eq({'version':'0.0.1'}.to_json)
要么
expect(JSON.parse(response.body)).to eq({'version':'0.0.1'})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.