当我尝试在服务器上使用API运行我的Citrus v.2.7.5测试时出现问题,该服务器会向我的柑橘客户端响应自定义的HTTP状态代码。我的测试引发了IllegalArgument异常,因为服务器使用520 Http状态代码响应了一条消息。
我认为问题出在Citrus使用的spring-web v.4.3.14框架。 spring-web包含一个HttpStatus类,其中包含有效的Status-Codes枚举。当您尝试使用无效的自定义状态代码创建valueOf()时,将抛出错误:
/**
* Return the enum constant of this type with the specified numeric value.
* @param statusCode the numeric value of the enum to be returned
* @return the enum constant with the specified numeric value
* @throws IllegalArgumentException if this enum has no constant for the specified numeric value
*/
public static HttpStatus valueOf(int statusCode) {
HttpStatus status = resolve(statusCode);
if (status == null) {
throw new IllegalArgumentException("No matching constant for [" + statusCode + "]");
}
return status;
}
在spring-web的较新版本(5.x)中,此错误已修复,您可以使用自定义http状态代码,但citrus可以在此较旧版本中使用。... 也许我错了,并且将异常抛出了其他地方,但这与自定义的http状态代码有关,因为如果我们得到200个HTTP状态代码,那么一切正常。
有人知道如何用柑橘来解决这个问题吗?