3 Stimmen

Wie lässt sich überprüfen, ob die Aktion den richtigen Text zurückgibt?

Gibt es einen Standard oder eine bewährte Methode, um zu testen, ob eine Aktion in Rails den korrekten Text zurückgibt? Zum Beispiel habe ich eine einfache Aktion, die für die Durchführung der Ajax-Validierung verwendet wird und Folgendes tut:

def get_object_id
  if params[:id].blank?
    return render(:text => -1, :layout => false)
  end

  my_object = MyObject.find_by_id(params[:id].strip)

  # Wenn das Objekt gültig ist, gib die Objekt-ID zurück
  if my_object and my_object.active?
    return render(:text => my_object.id, :layout => false)
  end

  # Andernfalls, gib -1 zurück
  return render(:text => -1, :layout => false)
end

Derzeit verwende ich das @response-Objekt in meinen Tests ... z.B.:

def test_get_object_id_returns_invalid_for_non_existent_id
  # Handeln
  get :get_object_id, :id => 999

  # Bestätigen
  assert_response :success
  assert_equal "-1", @response.body

Aber obwohl ich größtenteils neu in Rails bin, deutet das, was ich bisher gesehen habe, darauf hin, dass es wahrscheinlich eine bessere Möglichkeit gibt, dies zu tun, als @request.body zu überprüfen.

Also, meine Frage an euch Ruby-Experten lautet: Ist das der beste Weg?

3voto

cwninja Punkte 9062

Ich denke, du hast bereits den richtigen Platz.

assert_select funktioniert eigentlich nur für XML-Inhalte, also musst du für andere Formate deine eigene Methode erstellen. Wenn ich das oft machen würde, würde ich wahrscheinlich eine benannte Assertionsmethode zu ActionController::TestCase hinzufügen.

z. B.

def assert_response_equals(v)
  assert_equal v.to_s, @response.body, "Erwarteter Antwortkörper soll #{v.inspect} sein"

Dadurch kannst du die Anführungszeichen überspringen.

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