Unit testing Grails-表ID默认值是不可为空的还是可以?
我在测试域验证时遇到问题。 下面是我的单元测试:Unit testing Grails-表ID默认值是不可为空的还是可以?,unit-testing,grails,groovy,Unit Testing,Grails,Groovy,我在测试域验证时遇到问题。 下面是我的单元测试: @Unroll void "Validate domain object SecUser when id:#id, username:#username, password:#password"() { when: SecUser user = new SecUser(id: id, username: username, password: password, enabled: "true", acc
@Unroll
void "Validate domain object SecUser when id:#id, username:#username,
password:#password"() {
when:
SecUser user = new SecUser(id: id, username: username, password:
password, enabled: "true", accountExpired: "false", accountLocked:
"false", passwordExpired: "false")
def userSave = user.validate()
then:
assert userSave == expected
where:
id | username | password || expected
527 | "admin@admin.com" | "test" || true
null | "admin@admin.com" | "test" || false
528 | null | "test" || false
529 | "admin@admin.com" | null || true
'' | "admin@admin.com" | "test" || false
530 | '' | "test" || false
555 | "admin@admin.com" | '' || true
557 | "admin@admin.com, a@b.hr" | "test" || false
}
问题是,即使id为null或为0,验证结果也是真的。我没想到。
这是SecUser域:
class SecUser {
Long id
String username
String password
boolean enabled
boolean accountExpired
boolean accountLocked
boolean passwordExpired
String sifpartnera
Long dodadresaid
String sifosobe
Long coid
String langid
static constraints = {
id(blank: false)
username blank: false, unique: true, email: true
password nullable: true
enabled()
accountExpired()
accountLocked()
passwordExpired()
sifpartnera nullable: true
dodadresaid nullable: true
sifosobe nullable: true
coid nullable: true
langid nullable: true
}
static mapping = {
version false
table name: "sec_user", schema: "public"
password column: '`password`'
id generator: 'sequence', column: 'id'
}
}
我不明白出了什么问题。我做错什么了吗?
谢谢。在验证方法中,默认情况下不检查id。其背后的原因很简单:在实例化的那一刻,id为null,并且只有在调用save之后才能设置。在validate方法中默认情况下不会检查id。其背后的原因很简单:在实例化的那一刻,id为null,并且只有在调用save之后才被设置