【问题标题】:post command not rendering data in Rspec发布命令不在 Rspec 中呈现数据
【发布时间】:2016-01-13 06:24:06
【问题描述】:

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

def add_values
  ans = params[:first_element] + params[:second_element]
  render :json => {:result => ans}.to_json
end

在路由文件中我声明了post :add_params 如果我打电话给curl -X POST -H "Content-Type:application/json" -d '{"first_element" : 3, "second_element" :2}' http://localhost:8000/add/add_values,它会返回{"result":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)>'

我正在使用 rails 3.2.16、ruby 2.1.5、rspec 3.0.0

【问题讨论】:

    标签: ruby-on-rails json post rspec


    【解决方案1】:

    你收到的很奇怪

    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
    

    ?

    【讨论】:

    • 当我尝试获取 content_mime_type 时,它​​返回 nil
    • 它显示错误 /Users/rack//.rvm/gems/ruby-2.1.5/gems/rspec-core-3.0.2/lib/rspec/core/configuration.rb:1057 :在“加载”中:/Users/rack_koh/rails_code/calculate/spec/controllers/add_controller_spec.rb:37:语法错误,意外':',期待keyword_end(SyntaxError):发布:add_values,格式:'json ... ^ /Users/rack_koh/rails_code/calculate/spec/controllers/add_controller_spec.rb:37:语法错误,意外',',期待keyword_end ...add_values,格式:'json',first_element:3 ... ^跨度>
    • 其实 add_values 是一个 post 命令,正在通过 http 命令被另一个应用程序命中
    • 尝试以post :add_values, format: 'json', first_element: 3, second_element: 2而不是post "http://localhost:8000/add/add_values", {"first_element" : 3, "second_element" :2}.to_json的方式提交您的帖子
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 2017-03-31
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多