3 Stimmen

Unit Test Controller durch Aufruf mehrerer Aktionen

Ich habe ein sehr ähnliches Problem wie das, das in diese Frage . (Der Hauptunterschied ist, dass ich Grails 2.1 verwende).

Grundsätzlich möchte ich einen Einheitstest schreiben, der etwas wie tut:

// set params so i can create an obj.
def results = controller.save()

// validate results or model/view
results = controller.edit(id, version)

Dies funktioniert jedoch nicht, da die erste Methodenaktion (Speichern) eine Umleitung ausgelöst hat und die zweite ebenfalls, was zu einer CannotRedirectException führt. Mit der Meldung:

Cannot issue a redirect(..) here. A previous call to redirect(..) has already redirected the response.

Die vorgeschlagene Lösung hierfür (die an verschiedenen Stellen zu finden ist) lautet:

redirectArgs.clear()

Dies funktioniert jedoch nicht, da es seit Grails 2 keine redirectArgs mehr gibt, sondern nur noch

response.redirectUr

die nur gelesen, aber nicht beschrieben werden können.

Ich habe diese Dinge auch schon ausprobiert (in verschiedenen Kombinationen):

response.reset()
clearGrailsWebRequest()
bindGrailsWebRequest()
cleanupGrailsWeb()
controller.redirect([:])
controller.redirect(null)
controller = new OfferObjectController()
controller = mockController(OfferObjectController)

Alles ohne Erfolg.

Mir sind die Ideen ausgegangen, was sonst noch funktionieren/helfen könnte. Jeder Vorschlag ist willkommen!

\==== EDIT ====

ich habe vergessen, das zu klären

response.reset()

Art von Werken, es lässt mich eine andere Aktion aufrufen, jedoch scheint es zu rückgängig machen/Rollback die Änderungen durch die vorherige Aktion, die genau das ist, was ich vermeiden möchte (wenn ich wollte, dass, würde ich den Aufruf in seine eigene test[Methode]) setzen.

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