获取ActionController :: UnknownFormat,在创建新对象时进行rspec测试

use*_*426 5 rspec ruby-on-rails ruby-on-rails-4

最近转移到Rails 4并得到我之前没有得到的错误.我正在尝试使用Capybara/Rspec测试我正在制作的表格.

当我单击表单上的按钮时,我得到的错误是:

Failure/Error: find(".submit.button").click
     ActionController::UnknownFormat:
       ActionController::UnknownFormat
     # ./app/controllers/office_listings_controller.rb:32:in `create'
     # ./spec/features/office_listings_spec.rb:78:in `block (3 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)

它指向我的控制器,看起来像:

def create
    selected_amenities = params[:amenities] || [] # empty list if no amenities checked
    @office_listing = OfficeListing.new(params[:office_listing])
    @office_listing.broker = current_broker
    p current_broker
    @office_listing.neighborhood = Neighborhood.find(params[:neighborhood_id])
    p @office_listing.neighborhood
    if @office_listing && @office_listing.save!
      @path = city_neighborhood_office_listing_path(@office_listing, :city_id => @office_listing.neighborhood.city.id, :neighborhood_id => @office_listing.neighborhood.id)
      create_amenities(@office_listing, selected_amenities)
      respond_to do |format|
        format.js
      end
    else
      @failure = "Unable to create office :-("
      respond_to do |format|
        format.js
      end
    end
  end
Run Code Online (Sandbox Code Playgroud)

并且它不喜欢format.js行,即使我有一个create.js.erb文件,它在我实际运行页面时被渲染.

不明白为什么实际页面正在运行但我的测试失败了.

任何想法将不胜感激!!

小智 14

我遇到了类似的问题:

post :duplicate, id: patient.media.first.id
Run Code Online (Sandbox Code Playgroud)

产生了同样的错误:

Failure/Error: post :duplicate, id: patient.media.first.id
ActionController::UnknownFormat:
ActionController::UnknownFormat
Run Code Online (Sandbox Code Playgroud)

我通过在post调用中添加格式来修复它:

post :duplicate, id: patient.media.first.id, format: :js
Run Code Online (Sandbox Code Playgroud)