Мое общее правило - проверять то, что я пишу. Поэтому, если я напишу пользовательские методы (или замыкания), я буду их тестировать. Это правило также означает, что я проверю ограничения, так как я написал ограничения. Для этого я использую метод mockForConstraintsTests () в GrailsUnitTestCase.
Пример блока ограничений:
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)
}
У меня будет следующий блок-тест следующих ограничений:
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"]
}
Это сразу поймает любые опечатки в моих ограничениях.
Я не проверяю сохранение, создание, обновление, удаление в домене; если они терпят неудачу, тогда у меня есть большие проблемы!