Я никогда не пытался устанавливать глобальные ограничения, но я могу вам сказать, что если вы хотите пометить поле как не пустое и не обнуляемое, вам вообще не нужно создавать новое ограничение, просто добавьте это к класс домена:
static constraints = {
email(blank:false)
}
Конечно, если вы ожидаете исключение при сохранении, вы его не получите - вам нужно протестировать объект после вызова save () или validate (), как показано в этом классе домена:
class Contact {
static constraints = {
name(blank:false)
}
String name
}
и его контрольный пример:
import grails.test.*
class ContactTests extends GrailsUnitTestCase {
protected void setUp() {
super.setUp()
}
protected void tearDown() {
super.tearDown()
}
void testNameConstraintNotNullable() {
mockDomain Contact
def contact = new Contact()
contact.save()
assertTrue contact.hasErrors()
assertEquals "nullable", contact.errors["name"]
}
}
Если вы хотите исключений при сохранении, вы можете добавить этот параметр в свой Config.groovy:
grails.gorm.save.failOnError = true
Я нашел, что это весьма полезно при разработке.
НТН
PS
Чтобы использовать ограничение, которое вы определили, вам нужно добавить это в класс вашего домена:
static constraints = {
email(shared:"myConstraintName")
}
Но учтите, что вы не можете проверить ограничение в модульном тесте, как встроенные, так как конфигурация не будет прочитана.