Rails 3でrespond_toとrespond_withのペアを使用して、DELETE#destroyリクエストに応答しています。破棄アクションはUsersControllerで定義されています。で指定されたユーザーを破棄params[:id]
し、JSテンプレートで応答します。ただし、リクエストはRSpecテストで失敗し続け、修正方法がよくわかりません。
これが私のUsersControllerのスニペットです:
class UsersController < ApplicationController
respond_to :html, only: [:index, :show, :new, :edit]
respond_to :js, only: [:create, :update, :delete]
...
def destroy
@user = User.find(params[:id])
@user.destroy
respond_with @user
end
end
そして、これが失敗し続けるテストです:
require 'spec_helper'
describe UsersController do
...
describe "DELETE #destroy" do
before { @user = create(:user); delete :destroy, id: @user.id, format: :js }
it "return HTTP success" do
response.should be_success
end
it "respond with JS content" do
response.content_type.should == 'text/javascript'
end
end
end
「JSコンテンツで応答する」テストは成功しますが、「HTTP成功を返す」テストは失敗します。デバッガーを使用してチェックするresponse.code
と、406です。削除が成功したので2xxを期待しています。これは通常のRailsの動作ですか、それともコードに問題がありますか?