0

我已经为此苦苦挣扎了很长时间,尝试了谁知道有多少组合-无济于事。似乎 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 test 会导致语法错误:

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 帖子吗?官方文档在这个问题上非常简洁。

4

1 回答 1

0

橡皮鸭编程确实有效。我已经整理好了:

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
于 2014-10-08T01:13:21.900 回答