계약서에서 날짜 형식을 어떻게 확인할 수 있습니까? 얼마전에 서비스가 밀리 초에서 타임 스탬프로 돌아 오는 날짜 형식을 변경 한 객체 매퍼를 상속 한 문제가있었습니다. 날짜 형식 변경을 잡을 계약을 맺으려고합니다. 어떤 방법이스프링 클라우드 계약 DSL 확인 날짜 형식
이@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;
}
시험은 날짜에 형식에 관계없이 통과 있나요 :
여기response {
status 200
body(
time: 1505276760077L
)
}
내가 내 객체 매퍼와 함께 연주 해요 내용은 다음과 같습니다. 여기에 내가 내 계약을 넣어 무엇 형식이 바뀌면 테스트를 실패하게 만드시겠습니까? 그 도움이된다면
는 여기 샘플 프로젝트가 : 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}");
테스트는 객체 매퍼 설정을 무시하고있는 것 같다. 테스트가 실행될 때 객체 매퍼를 가져 오려면 무언가를해야합니까?
안녕하세요 Marcin, 제안에 감사드립니다. 제안 된 솔루션을 구현할 때 내 질문을 업데이트했지만 날짜 형식을 변경해도 여전히 실패하지는 않습니다. 당신이 예제를 제공하거나 내가 뭘 잘못하고 있는지 명확히 할 수 있습니까? – Taylor
생성 된 테스트를 업로드하고 질문을 업데이트하는 것이 문제가됩니까? –
응답의 정규식을 설정하고 거기에 현재 가지고있는 응답이없는 경우 생성 된 테스트 –