Ruby on rails post命令未在Rspec中呈现数据

Ruby on rails post命令未在Rspec中呈现数据,ruby-on-rails,json,post,rspec,Ruby On Rails,Json,Post,Rspec,我已经定义了一个控制器添加。在控制器中,我定义了一个函数(添加参数) 在路由文件中,我声明了post:add_params 如果我调用curl-xpost-H“contenttype:application/json”-d'{“first_元素”:3,“second_元素”:2}”http://localhost:8000/add/add_values它返回{“结果”:5} 但是当我试着用Rspec测试时 describe AddController, :type => :request

我已经定义了一个控制器添加。在控制器中,我定义了一个函数(添加参数)

在路由文件中,我声明了
post:add_params
如果我调用
curl-xpost-H“contenttype:application/json”-d'{“first_元素”:3,“second_元素”:2}”http://localhost:8000/add/add_values
它返回
{“结果”:5}

但是当我试着用Rspec测试时

describe AddController, :type => :request do
  it "must return 5" do
    post "http://localhost:8000/add/add_values", {"first_element" : 3, "second_element" :2}.to_json
    expect(JSON.parse(response.body)["result"]).to eq "5"
  end
end
它给出了如下错误:

Failure/Error: expect(response["result_is"]).to eq 5
      expected: 5
        got: nil

   (compared using ==)
 # ./spec/controller/add_controller_spec.rb:67:in `block (2 levels) in <top (required)>'
Failure/Error:expect(响应[“result_is”])到等式5
预期:5
得:零
(使用==进行比较)
#./spec/controller/add_controller_spec.rb:67:in'block(2层)in'

我使用的是rails 3.2.16、ruby 2.1.5、rspec 3.0.0

收到的消息非常奇怪

Failure/Error: expect(response["result_is"]).to eq 5
如果你的期望是

expect(JSON.parse(response.body)["result"]).to eq "5"
expect函数的参数各不相同

您应该会收到这样的错误

Failure/Error: expect(JSON.parse(response.body)["result_is"]).to eq "5"
你确定你的期望不是吗

expect(response["result_is"]).to eq 5

当我试图获取内容\u mime\u类型时,它返回nilit显示错误/Users/rack//.rvm/gems/ruby-2.1.5/gems/rspec-core-3.0.2/lib/rspec/core/configuration.rb:1057:'load':/Users/rack\koh/rails\code/calculate/spec/controllers/add\u controller\u-spec.rb:37:语法错误,意外“:”,期望关键字\u end(SyntaxError):post:add_值,格式:'json…^/Users/rack_koh/rails_code/calculate/spec/controllers/add_controller_spec.rb:37:语法错误,意外“,”,应为关键字_end…add_值,格式:'json',第一个元素:3^实际上,add_values是一个post命令,另一个应用程序通过http命令点击该命令尝试以这种方式提交您的帖子
post:add_values,格式:'json',第一个_元素:3,第二个_元素:2
而不是
post“http://localhost:8000/add/add_values“,{first_element:3,“second_element:2}.to_json
expect(response["result_is"]).to eq 5