我在 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 行为还是我的代码有问题?