2010-05-05 12 views
7

¿Existe una "mejor práctica" o estándar de facto con la cantidad de funcionalidad GORM que se debe probar en las pruebas de unidad/funcionales?¿Cuánto de Grails GORM para probar?

Mi opinión es que uno probablemente debería hacer la mayoría de las pruebas de dominio como pruebas funcionales para que pueda obtener el entorno completo de Grails. Pero, ¿qué pruebas? Inserciones, actualizaciones, elimina? ¿Pruebas las limitaciones a pesar de que probablemente fueron probadas más a fondo por la versión de Grails?

¿O simplemente asume que GORM hace lo que se supone que debe hacer y se mueve a otras partes de la aplicación?

Respuesta

5

Mi regla general es probar lo que escribo. Por lo tanto, si escribo métodos personalizados (o cierres), los probaré en unidades. Esta regla también significa que probaré las restricciones desde que escribí las restricciones. Para eso uso el método mockForConstraintsTests() en GrailsUnitTestCase.

Un ejemplo bloquear limitaciones:

static constraints = { 
     location(blank:true, nullable:true) 
     make(blank:false, nullable:false) 
     name(blank:false, nullable:false) 
     serviceTag(nullable:true) 
     purchaseDate(blank:false, nullable:false) 
     checkedDate(blank:false, nullable:false) 
     warrantyExpirationDate(nullable:true) 
     notes(blank:true, nullable:true) 
    } 

que tendría la siguiente prueba de la unidad limitaciones:

void test_null_constraints_are_checked() { 
     mockForConstraintsTests(Hardware) 
     def hardware = new Hardware() 
     assertFalse hardware.validate() 

     assertEquals 4, hardware.errors.getFieldErrorCount() 
     assertEquals "nullable", hardware.errors["name"] 
     assertEquals "nullable", hardware.errors["checkedDate"] 
     assertEquals "nullable", hardware.errors["purchaseDate"] 
     assertEquals "nullable", hardware.errors["make"] 
} 

Esto cogerá ninguna errata en mis limitaciones de inmediato.

No pruebo guardar, crea, actualiza, elimina en el dominio; si estos fallan, entonces tengo mayores problemas!

+0

¿Alguna vez probaría relaciones 1-M, etc.? –

+0

No puedo decir que los haya probado directamente en la unidad. Por lo general, los recojo en el nivel de integración. – zentuit

1

Personalmente probaría cualquier relación compleja que no me resulte 100% cómoda con la configuración, y cualquier acceso para el que se sobrescriba la implementación predeterminada.

+0

Eso suena razonable, solo me preocupa que estoy probando GORM en vez de mi código. En una forma de ver las cosas, mis asignaciones son parte de mi código y lo estoy probando. –

Cuestiones relacionadas