簡體   English   中英

Rails測試失敗-ActionController :: UnknownFormat:

[英]Failing rails test - ActionController::UnknownFormat:

我目前正在為所有控制器編寫測試,但遇到了無法解決的問題。 對於我的一個控制器,每個測試都可以工作(顯示,索引,新建,編輯,更新),但是由於某種原因,我的#create測試無法通過。 需要澄清的是:所有的固定裝置和其他方法都可以正常運行並通過-我的create方法或對該方法進行測試時出了點問題。

據我所知-錯誤可能與respond_to |format| 線,但似乎無法解決。

所有幫助非常感謝-謝謝!

這是測試

  test "should create captable" do
    sign_in @user
    post company_captables_url(@company, @captable), params: { captable: { company_id: @captable.company_id, name: "The BEST captable", version: @captable.version } }
    assert_response :success
  end

這是控制器的方法

  def create
      @captable = @company.captables.new(captable_params)

      respond_to do |format|
        if @captable.save
          format.html { redirect_to [@company, @captable], notice: 'Captable was successfully created.' }
          format.json { render :show, status: :created, location: @captable }
        else
          format.html { render :new }
          format.json { render json: @captable.errors, status: :unprocessable_entity }
        end
      end
    end

運行此測試時出錯

Error:
CaptablesControllerTest#test_should_create_captable:
ActionController::UnknownFormat: ActionController::UnknownFormat
    app/controllers/captables_controller.rb:24:in `create'
    test/controllers/captables_controller_test.rb:38:in `block in <class:CaptablesControllerTest>'


bin/rails test test/controllers/captables_controller_test.rb:36

從您的控制器,可以看到它同時響應html和json。

但是,在您的測試請求中,它以沒有任何格式的形式擊中了url(請參閱https://guides.rubyonrails.org/routing.html#path-and-url-helpers ,生成的url上沒有任何.anything ,否則您將找到.:format結尾)。 因此,控制器不知道對response_to進行什么操作,從而引發Unknown Format錯誤。

您基本上有幾個選擇:

1)您實際上可以編寫url並添加顯式格式

2)您可以嘗試在其中添加格式並置(例如: post "#{company_captables_url(@company, @captable)}.json"

3)您可以將路由設置為具有默認的響應格式(即: resources :captables, defaults: { format: 'json' } )。 https://guides.rubyonrails.org/routing.html#defining-defaults

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM