コントラクトの日付形式を確認するにはどうすればよいですか? 少し前に、サービスが返す日付の形式をミリ秒からタイムスタンプに変更するオブジェクト マッパーをサービスが継承するという問題に遭遇しました。日付形式の変更をキャッチする契約を書こうとしています。私が契約書に記入した内容は次のとおりです。
response {
status 200
body(
time: 1505276760077L
)
}
オブジェクトマッパーで遊んでいるものは次のとおりです。
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JodaModule());
/*
uncommenting this cause DateTime format to change from
milliseconds to timestamp
i.e., 1505276760077 changes to 2017-09-13T04:26:00.077Z
Either way, the test passes
*/
// objectMapper.configure(SerializationFeature
.WRITE_DATES_AS_TIMESTAMPS, false);
return objectMapper;
}
テストは、日付の形式に関係なく合格します。形式が変更されたときにテストを失敗させる方法はありますか?
それが役立つ場合は、ここにサンプルプロジェクトがあります: https://github.com/rtteal/consumer-driven-contacts-demo
アップデート:
正規表現を使用するように契約を更新しようとしましたが、オブジェクト マッパーを変更してもテストが失敗することはありません。
response {
status 200
body(
time: $(regex('[0-9]{13}'))
)
}
これは、生成されたテストの関連部分です。
assertThatJson(parsedJson).field("['time']").matches("[0-9]{13}");
テストは、オブジェクト マッパーの構成を無視しているようです。テストの実行時にオブジェクト マッパーを取得するために何かをする必要がありますか?