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!
¿Alguna vez probaría relaciones 1-M, etc.? –
No puedo decir que los haya probado directamente en la unidad. Por lo general, los recojo en el nivel de integración. – zentuit