No se puede realizar una prueba unitaria con la función que tiene una instrucción createCriteria ()

StackOverflow https://stackoverflow.com/questions/5386479

Pregunta

Quiero escribir una prueba unitaria (por JUnit) para probar el valor de esta función en Groovy:

    String getPeopleNamesById(int[] peopleIds) {
        List<String> names = People.createCriteria().list{
            projections { property("name") }
            'in' ("id", peopleIds)
        }
        return names ? names.join(", ") : "";
    }

Pero la prueba unitaria siempre falla al leer esta declaración: List Names = People.CreateCriteria (). List {...} Groovy.lang.MissingMethodException: No hay firma de método: People.CreateCriteria () es aplicable para los tipos de argumentos: () valores: []. ¿Supongo que por llamar a funciones que ejecutan algunas conexiones y consultas de DB? ¿Podría ayudarme a escribir esta prueba? ¡Muchas gracias!

¿Fue útil?

Solución

Las consultas de criterios no están disponibles en las pruebas unitarias, y no se proporcionan por mockDomain. Puede burlarse de sus criterios consultas usted mismo, por ejemplo, con mockFor, o hacer de su prueba una prueba de integración, donde tiene acceso a un entorno de base de datos completo.

Aquí hay un ejemplo de cómo podría burlarse de su consulta:

mockFor(People).demand.static.createCriteria = { ->
    [list: { closure -> [ <some mock objects> ] } ]
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top