【发布时间】:2011-04-05 21:00:21
【问题描述】:
我正在尝试在 grails 中创建一个测试,以确保 unique: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 类扩展 GrailsUnitTestCase { 受保护的无效设置(){ 超级设置() }
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 变量对于 .validate() 都返回 true,即使我告诉它们都具有相同的 siteId...
我觉得这与这些没有被放入数据库,只是存储在内存中的事实有关?
非常感谢所有帮助,谢谢。 -阿萨夫
【问题讨论】: