Utilizar mockConfig en test de Grails

Necesitaba realizar test unitarios en una aplicación que estamos desarrollando y una de las clases que quería testear accedía, por medio del ConfigurationHolder a datos que debían ser cargados en el Config.groovy

Una búsqueda rápida en google arrojó varios resultados sobre como utilizar la magia del metaClass de groovy para mockear manualmente los objetos y métodos necesarios, pero hay mejores maneras de hacerlo.

Desde no se que versión de Grails existe el método mockConfig de la clase GrailsUnitTestCase de la cual deberían heredar todos nuestros test unitarios.

Lamentablemente no encontré mucha información sobre como usar este método por ningún lado. Solo había encontrado un blog llamado 418 I’m a teapot (en un artículo medio viejito) en el cual decían que no lo habían logrado hacer funcionar y por eso continuaban utilizando metaclass

Por suerte haciendo algunas pruebas descubrí una forma de hacerlo trabajar para mis necesidades. El secreto es que este método no acepta la sintaxis jerárquica (perdón, no se el nombre técnico) en el config, sino que debemos hacer todo más sencillamente.

Por ejemplo, en lugar de escribir

mockDomain("""
    grails {
        paypal {
            server = "https://www.sandbox.paypal.com/"
        }
    }   
""")

lo que debemos escribir es

mockDomain("""
    grails.paypal.server = "https://www.sandbox.paypal.com/"
""")

De esta manera, y accediendo a la configuración por medio del ConfigurationHolder en mi aplicación, no he tenido mayores problemas.


Discussion Area - Leave a Comment