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

Ruby on rails 获取ActionController::UnknownFormat,创建新对象时进行rspec测试,ruby-on-rails,rspec,ruby-on-rails-4,Ruby On Rails,Rspec,Ruby On Rails 4,最近转移到Rails 4,并得到了以前没有的错误。 我正在尝试测试我正在使用Capybara/Rspec制作的表单 当我单击表单上的按钮时,得到的错误是: Failure/Error: find(".submit.button").click ActionController::UnknownFormat: ActionController::UnknownFormat # ./app/controllers/office_listings_controller

最近转移到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)>'
而且它不喜欢format.js行 即使我有一个create.js.erb文件,它在我实际运行页面时被呈现

不理解为什么实际页面正在运行,但我的测试失败了


任何想法都将不胜感激

我也有类似的问题:

post :duplicate, id: patient.media.first.id
产生了相同的错误:

Failure/Error: post :duplicate, id: patient.media.first.id
ActionController::UnknownFormat:
ActionController::UnknownFormat
我通过在post call中添加格式来修复它:

post :duplicate, id: patient.media.first.id, format: :js

是的,使用格式::js解决了这个问题,在我的例子中,我的代码如下所示:

在我的规范中:

  params = {
    profile_id: profile.id,
    track_id: track.id,
    format: :js
  }

  post :create, params
  respond_to do |format|
    format.js {}
  end
在我的控制器中:

  params = {
    profile_id: profile.id,
    track_id: track.id,
    format: :js
  }

  post :create, params
  respond_to do |format|
    format.js {}
  end
在轨道5之前:

post :action, id: ..., format: :json
从Rails 5开始:

post :action, params: { id: ..., format: :json }

您的测试可能以html格式运行创建操作,而您的控制器仅以js格式运行。很好的答案,我希望我在一小时前看到。轨道5英尺!