2017-10-01 7 views
0

계약서에서 날짜 형식을 어떻게 확인할 수 있습니까? 얼마전에 서비스가 밀리 초에서 타임 스탬프로 돌아 오는 날짜 형식을 변경 한 객체 매퍼를 상속 한 문제가있었습니다. 날짜 형식 변경을 잡을 계약을 맺으려고합니다. 어떤 방법이스프링 클라우드 계약 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}"); 

테스트는 객체 매퍼 설정을 무시하고있는 것 같다. 테스트가 실행될 때 객체 매퍼를 가져 오려면 무언가를해야합니까?

답변

0

정규식을 날짜 (http://cloud.spring.io/spring-cloud-static/Dalston.SR3/#_regular_expressions)로 사용할 수 있습니다. 그러면 올바른 날짜가 생성됩니다. priority 필드의 낮은 값 (즉, 우선 순위가 높음)을 설정할 수도 있습니다. 유효하지 않은 날짜에 대해 별도의 계약을 작성해야하는 경우 nonBlank() 값과 일치하는 날짜에 대해 이러한 쌍을 작성하십시오. priority 필드의 값을 더 높게 설정하십시오 (우선 순위가 낮습니다). 그렇게하면 동일한 URL에 대해 2 가지 동작을 확인하는 2 건의 계약이 생깁니다. 1) 유효 일자, 2) 유효하지 않은 날짜

UPDATE : 당신은 독립형 설치를 MockMvc를 사용하는

. 이는 사용자가 가지고있는 컨텍스트 구성을 무시한다는 것을 의미합니다. 작성한 bean (여기서는 https://github.com/rtteal/consumer-driven-contacts-demo/blob/master/src/test/java/com/example/DemoBase.java#L17)을 고려하려면 webAppContextSetup 메소드를 사용하십시오. 이 페이지에서 예를 들어 https://piotrminkowski.wordpress.com/2017/04/26/testing-java-microservices/을 확인하십시오.

+0

안녕하세요 Marcin, 제안에 감사드립니다. 제안 된 솔루션을 구현할 때 내 질문을 업데이트했지만 날짜 형식을 변경해도 여전히 실패하지는 않습니다. 당신이 예제를 제공하거나 내가 뭘 잘못하고 있는지 명확히 할 수 있습니까? – Taylor

+0

생성 된 테스트를 업로드하고 질문을 업데이트하는 것이 문제가됩니까? –

+0

응답의 정규식을 설정하고 거기에 현재 가지고있는 응답이없는 경우 생성 된 테스트 –