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.