domingo, 15 de noviembre de 2009

Test de integración, recuperar las variables devueltas en el model

Para poder recuperar las variables que un Controller pone en el modelo desde un test de integración, puedes seguir el siguiente truco. Básicamente le dices que los valores que se rellenan en el render, los copie a un Map definido en el propio test de integración. Una vez invocado el controller, solo hay que acceder a dicho Map.

class FooController {
def bar = {
render(view:"baz", model:[foo:"bar"]
}
}
class FooControllerTests extends GrailsUnitTestCase {
def renderMap

protected void setUp() {
super.setUp()
FooController.metaClass.render = {Map map -> //Esto es para acceder al modelo cuando el view o template se renderiza
renderMap = map
}
}
void testBar () {
def controller = new FooController()
controller.bar()
assert renderMap.model.foo == "bar"
assert renderMap.view == "baz"
}
}

No hay comentarios:

Publicar un comentario