Я пытаюсь создать тест в Grails, чтобы убедиться, что действительно работает уникальное ограничение: true, вот мой класс и файл теста:
пакет edu.drexel.goodwin.events.domain
класс UpayConfig {
String name
String siteId
String postingCode
static constraints = {
name(blank:false, maxSize:50)
siteId(blank:false, unique:true)
postingCode(blank:false)
}
}
пакет edu.drexel.goodwin.events.domain
импорт grails.test. *
Класс UpayConfigTests extends GrailsUnitTestCase {
protected void setUp () {
super.setUp ()
}
protected void tearDown() {
super.tearDown()
}
void testCleanUpayConfigValidates() {
mockForConstraintsTests UpayConfig
def cleanUpayConfig = create()
assertTrue cleanUpayConfig.validate()
}
void testUpayConfigSiteIdMustBeUnique() {
mockForConstraintsTests UpayConfig
def upayConfigOne = create()
def upayConfigTwo = create()
assertFalse upayConfigOne.validate()
assertFalse upayConfigTwo.validate()
upayConfigTwo.siteId = '81'
assertTrue upayConfigOne.validate()
assertTrue upayConfigTwo.validate()
}
UpayConfig create() {
def upayConfig = new UpayConfig(
siteId: '82',
name: 'SMT - Workshops',
postingCode: '6'
)
}
}
Но этот второй тест не пройден, обе переменные upayConfig возвращают true для .validate (), хотя я говорю им обоим иметь одинаковый siteId ...
У меня такое ощущение, что это как-то связано с тем, что они не помещаются в базу данных, а просто хранятся в памяти?
Вся помощь очень ценится, спасибо.
-Asaf