【问题标题】:Functional testing :update action of JSON API in Rails 4功能测试:Rails 4 中 JSON API 的更新操作
【发布时间】:2014-12-02 13:33:13
【问题描述】:

我已经为此苦苦挣扎了很长时间,尝试了谁知道有多少组合 - 无济于事。似乎 SO 和 Google 上的其他几个人无法解决此问题。

本质上,我在 Rails 4 的内置功能测试框架内的控制器上发布 :update 操作。我的应用程序严格来说是一个 JSON API,所以我需要将 :update 请求作为 JSON 请求发布。在野外一切都很好,但功能测试语法似乎无法掌握我需要的东西。

这是我目前的尝试:

test "should be able to update location" do

  post :update, id: 1, format: :json, '{"is_private": "false"}'

  get :show, id: 1, format: :json
  assert_equal json['data'][0]['is_private'], false

end

运行 rake 测试导致语法错误:

unexpected '\n', expecting =>

为清楚起见,我的控制器操作如下所示:

def update
  @location = Location.find(params[:id])
  if @location.update_attributes(ActiveSupport::JSON.decode(request.body.read))
    api_response(@location)
  else
    respond_with api_error
  end
end

我在这里缺少什么?甚至可以使用 Rails 4 的内置功能测试框架测试 JSON 帖子吗?官方文档在这个问题上非常简洁。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 functional-testing json-api


    【解决方案1】:

    橡皮鸭编程确实有效。我已经解决了:

    test "should be able to update location" do
    
      update = { is_private: false }.to_json
      patch(:update, update, id: 1)
    
      get :show, id: 1, format: :json
      assert_equal json['data'][0]['is_private'], false
    
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-19
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      相关资源
      最近更新 更多