Ich habe eine REST-konforme Ressource in meiner Rails-App namens "Photo". Ich verwende Büroklammer , um verschiedene "Stile" meiner Fotos (für Thumbnails und dergleichen) zu bedienen, und ich bin es auch Verwenden einer benutzerdefinierten Route für den REST-Zugriff auf diese Stile:
%Vor%Das funktioniert gut, aber ich möchte einen Test schreiben, um sicherzustellen, dass es so bleibt.
Ich habe bereits einen Funktionstest, um die Show-Aktion des Photocontrollers aufzurufen (tatsächlich von scaffold erzeugt):
%Vor%Damit wird die Ausführung der Aktion unter der URL "/ photo / 1" getestet. Jetzt möchte ich die Ausführung der URL "/ photo / 1 / style / foo" testen. Leider scheint ActionController :: TestCase nicht auf diese URL zu treffen. Die get-Methode möchte immer eine Aktion / ID und akzeptiert kein URL-Suffix.
Wie gehe ich vor, um eine benutzerdefinierte URL zu testen?
Beim Überprüfen von @ fernybs Antwort fand ich diesen Ausschnitt in demselben Rdoc
In Tests können Sie einfach die URL oder die benannte Route übergeben, um sie zu erhalten oder zu posten. def send_to_jail bekomme '/ Gefängnis' assert_response: Erfolg assert_template "Gefängnis / Front" Ende
Wenn ich dies jedoch versuche , erhalte ich eine Fehlermeldung:
%Vor%Ich frage mich, ob ich etwas falsch mache.
In der Rails-API-Dokumentation:
Route globbing
Angabe von
%Vor%*[string]
als Teil von a Regel wie:wird Glob alle verbleibenden Teile der Route, die nicht erkannt wurde vorhin. Die globbed-Werte sind in
params[:path]
als Array von Pfad Segmente.
Es sieht also so aus, als müssten Sie die Argumente :path
übergeben, um die Aktion korrekt zu testen.
Tags und Links ruby-on-rails controller url functional-testing