私はこれに長い間苦労してきました。組み合わせの数を誰が知っているかを試してみましたが、役に立ちませんでした。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 投稿をテストすることは可能ですか? 公式ドキュメントは、この問題について非常に簡潔です。