【问题标题】:ActionController::UnknownFormat: when using RspecActionController::UnknownFormat:使用 Rspec 时
【发布时间】:2014-04-25 12:55:15
【问题描述】:

我正在创建一个简单的 API 来对联系人执行 CRUD 操作。 :index:show:create:update 方法工作正常,它们都通过了各自的请求 rspec 测试。该问题仅出现在:destroy 方法中。 :destroy 操作如下所示:

class Api::V1::ContactsController < ApplicationController

  def destroy
    @contact = Contact.find(params[:id])
    @contact.destroy

    respond_to do |format|
      format.json {render action: :index }
    end
  end
end 

测试DELETE 请求的规范如下所示:

 describe "DELETE /api/v1/contacts/:id" do
  before(:each) do
   @contact = FactoryGirl.create(:contact)
  end

  it "it should have a status code of 200" do
    delete "/api/v1/contacts/#{@contact.id}"
    expect(response.status).to eq(200)
  end

  it "It should delete a contact" do
    expect{
      delete "/api/v1/contacts/#{@contact.id}"
    }.to change(Contact, :count).by(-1)
  end
end

当我运行测试时,我收到以下错误消息:

Failure/Error: delete "/api/v1/contacts/#{@contact.id}"
 ActionController::UnknownFormat:
   ActionController::UnknownFormat
# ./app/controllers/api/v1/contacts_controller.rb:67:in `destroy'

respond_to do |format|contacts_controller.rb 中的第 67 行

【问题讨论】:

    标签: ruby-on-rails ruby rspec actioncontroller


    【解决方案1】:

    尝试将您的请求格式更改为 JSON,即替换

    delete "/api/v1/contacts/#{@contact.id}"
    

    通过

    delete "/api/v1/contacts/#{@contact.id}.json"
    

    这将允许format 逻辑确定您希望以它知道的 JSON 格式呈现回复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多