У меня есть валидатор внутри класса домена, и у меня проблема с тестированием контроллера на Lagerort.
com.example.xyz.LagerortControllerSpec > Test the update action performs an update on a valid domain instance FAILED
java.lang.IllegalStateException: Either class [com.example.xyz.Lagertyp] is not a domain class or GORM has not been initialized correctly or has already been shutdown. Ensure GORM is loaded and configured correctly before calling any methods on a GORM entity.
Если я опускаю валидатор, все тестируется нормально, но это не то, что я хочу.
Класс домена:
class Lagerort {
String lagerort
Lagertyp lagertyp
String beschreibung
static auditable = true
static constraints = {
lagerort(nullable: false, blank: false, unique: true)
lagertyp(nullable: false, blank: false, validator: { val, obj ->
// Only ONE Lagerort may be "Schrott"
if (Lagertyp.count() > 0) {
def _LAGERTYPSTRING="Schrott"
Lagertyp lagertypschrott = Lagertyp.findByLagertyp(_LAGERTYPSTRING)
if (obj.lagertyp == lagertypschrott && Lagerort.countByLagertyp(lagertypschrott)>0) return ['lagerortschrottunique',_LAGERTYPSTRING]
}
})
beschreibung(nullable: false, blank: false)
}
String toString(){lagerort}
}
Часть testCompile зависимостей в build.gradle выглядит следующим образом:
testCompile "org.grails:grails-plugin-testing"
testCompile "org.grails.plugins:geb"
testCompile "org.grails.plugins:hibernate5"
testRuntime "org.seleniumhq.selenium:selenium-htmlunit-driver:2.47.1"
testRuntime "net.sourceforge.htmlunit:htmlunit:2.18"
Я уже пытался создать несколькообъекты типа Lagertyp в части настройки тестов контроллера, так что Lagertyp.count() > 0
будет верным для валидатора, но это тоже не помогло.
PopulateValidParams LagerortControllerSpec / test выглядит следующим образом:
def populateValidParams(params) {
assert params != null
params["lagerort"] = 'Fa.Conrad'
params["lagertyp"] = ["lagertyp": 'Fa.Conrad', "beschreibung": 'Motor befindet sich bei Fa.Conrad']
params["beschreibung"] = 'in Reparatur bei Fa. Conrad'
}
LagerortController: https://pastebin.com/PpZ5zqMm
Тест для LagerortController: https://pastebin.com/pxZ6UeVK
Есть идеи?