Grails - 表ID默认不可为空或是吗?

时间:2017-10-13 10:18:36

标签: unit-testing grails groovy

我在测试域验证时遇到问题。 这是我的单元测试:

echo '<script type="text/javascript">
        swal({"Ha ocurrido un error", "El nombre de usuario y/o contrase\u00F1a es incorrecto. Por favor, inténtalo de nuevo", "error"}).then(function()
      {
        setTimeout(function(){window.location = "www.google.com";},2000);  // This will alert for two seconds and then it will redirect you to given URL.
      });
    </script>';

问题是,即使id为null或&#39;,验证结果也是如此。我没想到。 这是SecUser域:

@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

}

我不明白这个问题是什么。难道我做错了什么? 谢谢。

1 个答案:

答案 0 :(得分:4)

默认情况下,id方法未检查validate()。其背后的原因很简单:在实例化的那一刻,id为空,只有在调用save()后才会设置。