0

コントラクトの日付形式を確認するにはどうすればよいですか? 少し前に、サービスが返す日付の形式をミリ秒からタイムスタンプに変更するオブジェクト マッパーをサービスが継承するという問題に遭遇しました。日付形式の変更をキャッチする契約を書こうとしています。私が契約書に記入した内容は次のとおりです。

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}");

テストは、オブジェクト マッパーの構成を無視しているようです。テストの実行時にオブジェクト マッパーを取得するために何かをする必要がありますか?

4

1 に答える 1