2017-09-26 7 views
0

特定のケースでは、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 [「状態」])のための動機や使用 ケース

私が選択するために、ジャクソンのロジックを知りません右側のシリアライザしかし、間違ったシリアライザが使用されていることがわかります。それは私のすべてのテストでは起こりません。ただし、すべての制約検証エラーは失敗します。

答えて

3

httpMessageConvertersをrestUserMockMvcに設定していません。これを追加

は私のために問題を解く:

.setMessageConverters(httpMessageConverters) 
+0

あなたは私のヒーローです。そしてそれは愚かな質問だった。私は他の 'MockMvc'が働いていたという事実に全く惑わされました。ありがとう! – Henri

+0

擬似(ControllerAdvice、MessageConverter、Filterなど)で複数のものを手動で設定して、Springアプリケーションの動作を完全に複製する必要があるので、混乱します。そのことを忘れるのは簡単です。 – Falydoor

関連する問題