Rails Funktionstest von beliebigen oder benutzerdefinierten URLs

8

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?

Aktualisieren

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.

    
Craig Walker 01.11.2009, 03:15
quelle

2 Antworten

5

Verwenden Sie assert_routing , um Routen zu testen:

%Vor%

In Ihrem Integrationstest können Sie dann Folgendes tun:

%Vor%     
fernyb 01.11.2009, 03:42
quelle
1

In der Rails-API-Dokumentation:

  

Route globbing

     

Angabe von *[string] als Teil von a   Regel wie:

%Vor%      

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.

    
Matt Haley 01.11.2009 03:39
quelle