カスタマイズされた HTTP-Status-Codes をシトラス クライアントに応答するサーバーで API を使用して Citrus v.2.7.5 テストを実行しようとすると問題が発生します。サーバーが 520 Http-Status-Code でメッセージに応答するため、テストで IllegalArgument 例外がスローされます。
問題は、Citrus で使用されている spring-web v.4.3.14 フレームワークが原因だと思います。spring-web には、有効な Status-Code の列挙を持つ HttpStatus クラスが含まれています。「有効」ではないカスタムステータスコードの 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-status-codes を使用できますが、citrus はこの古いバージョンで動作します...おそらく私が間違っていて、例外が別の場所でスローされます。 200 の HTTP-Status-code を取得すると、すべて正常に動作するためです。
柑橘類でこの問題を解決する方法を知っている人はいますか?