当前位置: 首页 > 知识库问答 >
问题:

Grails getErrorCount()返回超过1个错误,如何获取错误列表?

司空玮
2023-03-14

对于Grails中的这个字段,我有以下约束:

businessNumber(matches: '([0-9A-Z]*9)RA([0-9A-Z]*4)', maxSize: 15)

我使用了maxSize约束,以便grails在html视图中嵌入maxlength属性。我对约束进行了如下所示的单元测试:

void testBusinessNumberExceedMaxSize(){
        mockChildrenSpecialAllowancesForm.setBusinessNumber("F%G&Hy934F4G6H%55")
        assertFalse (mockChildrenSpecialAllowancesForm.validate())
        assertEquals ("maxSize",mockChildrenSpecialAllowancesForm.errors.businessNumber)
        assertEquals (2, mockChildrenSpecialAllowancesForm.errors.getErrorCount())
    }
testBusinessNumberExceedMaxSize(com.ass.socialservicescm.ChildrenSpecialAllowancesTests)
|  org.junit.ComparisonFailure: expected:<ma[xSize]> but was:<ma[tches]>
    at org.junit.Assert.assertEquals(Assert.java:125)
    at org.junit.Assert.assertEquals(Assert.java:147)
    at com.ass.socialservicescm.ChildrenSpecialAllowancesTests.testBusinessNumberExceedMaxSize(ChildrenSpecialAllowancesTests.groovy:177)

注意:我使用的是grails 2.0.0

共有1个答案

赵飞雨
2023-03-14

我使用它将所有验证异常解析成一个字符串,然后在调用代码中执行assertEquals,并将其与此结果进行比较。也许有一个更简单的方法,但现在这对我有效。

public static String getErrorString(errors) {
    StringBuffer errorMsg = new StringBuffer();
    errors.allErrors.each {
        if (it instanceof org.springframework.validation.FieldError) {
            if ((it.defaultMessage) == null) {
                errorMsg.append('Error-> ObjectName:' + it.getObjectName() + ' /Field:' + it.getField() + ' /RejectedValue:' + it.getRejectedValue() + ".\n");
            } else {
                errorMsg.append(doReplace((String) it.defaultMessage, it.arguments) + "\n");
            }
        }
    }
    return errorMsg.toString();
}

public static String doReplace(String error, Object[] arguments) {
    int index = 0;
    arguments.each {
        error = error.replace("{" + index + "}", it.toString());
        index++;
    }
    return error;
}
 类似资料:
  • 当“事件ID”与“用户ID”匹配时,im会尝试从我的“事件”表中选择所有数据。然而,我得到一个错误1242,子查询返回超过1行。 我理解我的子查询将返回多行,因为一个用户可以参加多个事件。那么我如何使我的查询接受多行呢?

  • null 但如果有例外,我该怎么办? null

  • 我已经使用创建了“CfnUserPool”对象https://docs.aws.amazon.com/cdk/api/latest/python/aws_cdk.aws_cognito/CfnUserPool.html aws文件。 我想获取UserPool的“Pool Id”。其Id值为“us-east-1_4kxxxxxx”。我使用python尝试了很多选项来获取这个值,但都没有成功。 所以我

  • 基类控制器里有error方法,用于api的错误消息返回输出 /** * 操作错误跳转的快捷方法 * @access protected * @param mixed $msg 提示信息,若要指定错误码,可以传数组,格式为['code'=>您的错误码,'msg'=>'您的错误消息'] * @param mixed $data 返回的数据 * @par

  • 我正在努力使用Alamofire及其浏览器获取返回的json错误消息<代码>成功/。故障方法。 在使用这个之前,我可以使用

  • 我是JS的学生。我有一段代码返回了一个错误。 这是返回的语法错误。你们能解释一下我做错了什么吗?