5 Stimmen

Einstellen des Inhaltstyps in einer ActionController::TestCase-Anfrage

Ich habe versucht, ein Get in meinem TestCase wie folgt durchzuführen:

request.env['CONTENT_TYPE'] = 'application/json'
get :index,:application_name=>"Heka"

Allerdings scheitert sie mit einer:

ActionView::MissingTemplate: Missing template alarm_events/index with {:handlers=>[:builder, :haml, :erb, :rjs, :rhtml, :rxml], :locale=>[:en, :en], :formats=>[:html]

Trotzdem habe ich in meinem Controller:

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

Wie zur Hölle sollte ich die beabsichtigte Anforderung auf dem TestCase codieren?

Wenn ich alarm_events.json im Browser abrufe, funktioniert es einwandfrei.

Gracias

8voto

tommy chheng Punkte 8888

Ich musste das Format in den Parametern für den Action-Controller-Test angeben:

get :index, {format: :json}

6voto

Pedro Rolo Punkte 25685
@request.accept = 'application/json'

2voto

23tux Punkte 13009

Ich würde vorschlagen, den Header innerhalb der format.json zu setzen

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X