Ich versuche, XML-Inhalt über POST an eine Controller-Methode ('Index') in einem einfachen Rails-Projekt zu senden. Es ist nicht RESTful, da mein Modellname anders ist, sagen wir "Autos". Ich habe folgendes in einem Funktionstest, der funktioniert:
%Vor%Ich versuche jetzt Gurke (0.4.3) und würde gerne wissen, wie ich die POST-Anfrage in einer "When" -Klausel simulieren kann. Ich habe nur eine Controller-Methode 'index', und ich habe folgendes in config / routes.rb:
%Vor%undefinierte Methode 'index' für # (NoMethodError)
Schätzen Sie Vorschläge zur Durchführung von Integrationstests mit Cucumber für HTTP POST mit XML-Inhalt.
Webrat wird dir hier nicht helfen, es ist für browserbasierte Interaktionen. Wenn du also eine API spezifizierst, wird es nicht helfen.
Sie können "Post" in Cucumber verwenden, aber Sie müssen den vollständigen Pfad zur Aktion angeben, nicht nur die Aktion. Übergeben Sie auch den Content-Type-Header, damit Rails weiß, dass Sie XML übergeben.
%Vor%Auf der Antwortseite können Sie Folgendes tun:
%Vor%Patrick Ritchies Lösung hat mir auch geholfen, aber ich musste eine kleine Änderung vornehmen, damit es mit Rails 3 funktioniert.
%Vor%Ich denke, das liegt daran, dass Rails in v3 enger in Rack integriert ist.
Vielen Dank, ich habe den ganzen Tag geschworen. Ich werde ein Beispiel mit Basis-Authentifizierung und mit JSON hinzufügen, wenn andere Leute als ich danach suchen. Übrigens funktioniert sowohl application/xml
als auch text/xml
, aber für json benötigen Sie application/json
.
und JSON
%Vor% und ich benutze diese in spec/requests
ohne Webrat oder Capybara Browser Zeug.
Tags und Links ruby ruby-on-rails cucumber