繁体   English   中英

使用rspec-rails测试哈希失败

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM