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