Я бы посоветовал не тестировать getErrorCount()
, так как вы сделаете ваши тесты хрупкими (когда вы добавляете другие ограничения, вам нужно будет помнить, чтобы обновлять каждый экземпляр new BlogPost()
в любом месте ваших тестовых случаев).Просто отметьте hasErrors()
.
Кроме этого ... для каждого ограничения необходимо сгенерировать некоторые тестовые данные, которые нарушают его, вызвать процедуру проверки и подтвердить ошибки.Это код, который вам нужен.
Измените некоторые методы, чтобы удалить дублирование.пример:
private void assertConstraintWorks(clazz, fieldName, testData, expectedErrorCode) {
def instance = clazz.newInstance((fieldName): testData)
assertFalse instance.validate()
assertTrue instance.hasErrors()
assertEquals expectedErrorCode, instance.errors?.getFieldError(fieldName)?.code
}
void testConstraints() {
assertConstraintWorks BlogPost, 'title', '', 'blank'
assertConstraintWorks BlogPost, 'text', '', 'blank'
assertConstraintWorks BlogPost, 'text', ObjectMother.bigText(2001), 'maxSize.exceeded'
}