特定のケースでは、JacksonはZalando Problem Statusの間違ったシリアライザを選択します。それはStatusTypeSerializer
の代わりにEnumSerializer
を選択します。デシリアライズすると、正しいものが取られます(これにより、以下の例外があります)。Zalando RFC7807間違ったシリアライザがJacksonのステータスで選択されました
問題はthis projectで再現できます。ちょうどAccountResourceIntTest.testRegisterInvalidLogin
を実行してください。小さなテストケースでは発生しませんが、このテストでは信頼性があります。それは任意の助けになることができるかどう
これはエラーです:
com.fasterxml.jackson.databind.JsonMappingException:現在のトークン (VALUE_STRING)ない数値、[ で数値アクセサを使用することはできません出典:[B @ 2aa85cc4;行:1、列:10181] [出典: [B @ 2aa85cc4;行:1、カラム:10180](参照チェーンを通して: org.zalando.problem.DefaultProblem [「状態」])のための動機や使用 ケース
私が選択するために、ジャクソンのロジックを知りません右側のシリアライザしかし、間違ったシリアライザが使用されていることがわかります。それは私のすべてのテストでは起こりません。ただし、すべての制約検証エラーは失敗します。
あなたは私のヒーローです。そしてそれは愚かな質問だった。私は他の 'MockMvc'が働いていたという事実に全く惑わされました。ありがとう! – Henri
擬似(ControllerAdvice、MessageConverter、Filterなど)で複数のものを手動で設定して、Springアプリケーションの動作を完全に複製する必要があるので、混乱します。そのことを忘れるのは簡単です。 – Falydoor