如何在ActionController :: TestCase请求中设置内容类型

Ped*_*olo 5 ruby rest json ruby-on-rails ruby-on-rails-3

我试图在我的TestCase中执行这样的get:

request.env['CONTENT_TYPE'] = 'application/json'
get :index,:application_name=>"Heka"
Run Code Online (Sandbox Code Playgroud)

虽然,它失败了:

ActionView::MissingTemplate: Missing template alarm_events/index with {:handlers=>[:builder, :haml, :erb, :rjs, :rhtml, :rxml], :locale=>[:en, :en], :formats=>[:html]
Run Code Online (Sandbox Code Playgroud)

尽管在我的控制器中我有:

respond_to :html, :json

def index
    @alarm_events=[...]

    respond_with @alarm_events do |format|
      format.json{
        render :json=>@alarm_events.map{|e| e.to_portal_representation}.to_json, 
               :content_type=>'application/json'
      }
    end
  end
Run Code Online (Sandbox Code Playgroud)

我该如何编写TestCase上的预期请求?

当我在浏览器中请求alarm_events.json时它工作正常.

谢谢

tom*_*eng 8

我必须在动作控制器测试的参数中指定格式:

get :index, {format: :json}
Run Code Online (Sandbox Code Playgroud)


Ped*_*olo 6

@request.accept = 'application/json'
Run Code Online (Sandbox Code Playgroud)