RSpec中的Rails respond_to块失败

时间:2014-06-12 02:59:52

标签: ruby-on-rails ajax json rspec bdd

我在控制器中有一个动作,它使用当前登录用户的上下文和create动作的嵌套路径来产生新的连接模型关系。预期用途是视图中的button_to ... remote: true

控制器

...
def create
    enrollment = Enrollment.new(course_id: params[:course_id], user_id: current_user)
    respond_to do |format|
        if enrollment.save
            format.json {...}
            format.html {...}
        else
            ...
        end
    end
end

RSpec减去块

然后我尝试使用以下内容确保这在RSpec中有效。 (注意:用户在测试前登录)

let(:course) { FactoryGirl.create(:course) }
let(:user)   { FactoryGirl.create(:user) }
...
post :create, course_id: course, :format => :json
post :create, {course_id: course, :format => :json}
xhr :post, :create, course_id: course, :format => :json
xhr :post, :create, course_id: course

每次尝试都会导致在respond_to处引发ActionController :: UnknownFormat。这也发生在常规http POST的测试中。我查看了使用RSpec测试JSON API的所有教程,没有任何东西让我超过这个错误。

其他信息/尝试

我尝试使用默认使用js来实施此操作,但会导致相同的错误。

以下是相应的JSON尝试......

<form action="/courses/1/enrollments" class="button_to" data-remote="true" data-type="json" method="post"><div><input type="submit" value="Completed" /></div></form>

Rails日志输出

Processing by EnrollmentsController#Create as JSON # => or JS 

更改路由以使defaults: { format: 'json' }导致相同的错误...

Started POST "/courses/2/enrollments" for 0:0:0:0:0:0:0:0:1
Processing by EnrollmentsController#create as JSON
Completed 406 Not Acceptable
ActionController::UnknownFormat

设置:

  • Rails 4.1
  • JRuby 1.7.12

0 个答案:

没有答案