Я стараюсь быть хорошим программистом и настраивать модульные тесты для моего приложения Grails 2.2.3. Модульные тесты, которые используют введенный GORM метод .save()
, по-видимому, не сохраняются в тестовой БД. Для примера, вот что один тест состоит из:Модульные тесты Grails, не распознающие .save() в классе домена
@TestFor(TermService)
@Mock(Term)
class TermServiceTests {
void testTermCount() {
def t = new Term(code: "201310").save(validate: false, flush: true, failOnError: true)
println "Printing Term: " + t.toString()
assert 1 == Term.count() // FAILS
assert service.isMainTerm(t) // FAILS
}
}
Я сделал println
, что заканчивает печать Printing Term: null
, то есть срок не сохранять и возвращать экземпляр Term. Первое утверждение неверно с Term.count()
, возвращающимся 0.
Кто-нибудь знает, почему это может быть? У меня есть макет Term и TermService (через аннотацию TestFor, я считаю), поэтому я не совсем уверен, почему это не сработает. Благодаря!
Редактировать: Вот мой класс Term.
class Term {
Integer id
String code
String description
Date startDate
Date endDate
static mapping = {
// Legacy database mapping
}
static constraints = {
id blank: false
code maxSize: 6
description maxSize: 30
startDate()
endDate()
}
}
установить 'Validate: true' увидеть, если вам не хватает каких-либо ограничений – Alidad
Как' Term' выглядеть? – dmahapatro
@Alidad Мне не хватает нескольких ограничений, но я думал, что установка 'validate: false' означает, что проверка не будет срабатывать при сохранении, поэтому мне не нужно заполнять все поля. @dmahapatro Я добавил термин к исходному сообщению. – grantmcconnaughey