Я пытаюсь написать несколько модульных тестов для проверки объектов команд.Когда у моего командного объекта есть много полей с множеством правил проверки, настройка командного объекта для каждого теста становится слишком многословной и повторяющейся.
Скажем, у меня есть этот командный объект:
class MemberCommand {
String title
String name
String phone
static constraints = {
title(blank: false, inList: ["Mr", "Mrs", "Miss", "Ms"])
name(blank: false, maxSize:25)
phone(blank: false, matches: /\d{8}/)
}
}
Iхотите проверить это, выполнив что-то вроде этого:
class ValidationTitle extends UnitSpec {
def "title must be one of Mr, Mrs, Miss, Ms"() {
setup:
def memberCommand = new MemberCommand()
// I don't want to do:
// memberCommand.name = "Spock"
// memberCommand.phone = "99998888"
// Instead, I want to disable other constraints, except the one for title
mockForConstraintsTests MemberCommand, [memberCommand]
when:
memberCommand.title = t
then:
memberCommand.validate() == result
where:
t << ["Mr", "Mrs", "Miss", "Ms", "Dr", ""]
result << [true, true, true, true, false, false]
}
}
Этот тест не пройден, поскольку при вызове memberCommand.validate () будут использоваться все ограничения, что приведет к ошибке проверки даже в случае, когдаНазвание «Мистер» проходит испытания.Я мог бы установить имя и телефон для этого одного теста, но затем мне нужно будет установить заголовок и телефон, когда я проверяю на проверку имени, а также название и имя при проверке на проверку телефона.Вы можете себе представить, как это раздражает, когда в объектах команд появляется больше полей с более сложными правилами.
Есть ли способ отключить ограничения в модульном тестировании (с помощью Спока) в grails?
Если нет, то есть другие предложения для подобных ситуаций?
Спасибо.