2017-02-15 2 views
0

나는 봄 구름 계약 (1.1.0)를 사용하고 있지만 다음 예제가 작동 Pageable를SCC는 Pageable을 지원하지 않습니까?

http://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/Pageable.html

사용할 때는 페이징

없이, completly 붙어
@GetMapping("/employees") 
@Timed 
public List<EmployeeDTO> getAllEmployees() { 
    log.debug("REST request to get all Employees"); 
    List<Employee> employees = employeeRepository.findAll(); 
    return employeeMapper.employeesToEmployeeDTOs(employees); 
} 

그리고이 사람은 페이징

을 사용하고 있습니다

나의 계약이 있습니다. 하지 두 번째

import org.springframework.cloud.contract.spec.Contract 
[ 
Contract.make { 
    name("get all") 
    request { 
     method 'GET' 
     url('/api/employees?sort=id,desc') 

    } 
    response { 
     status 200 
     body([ 
      [id : 1, 
      firstName : value(consumer('test'), producer(regex('[a-zA-Z0-9]{1,255}'))), 
      lastName : value(consumer('test'), producer(regex('[a-zA-Z0-9]{1,255}'))), 
      phoneNumber : value(consumer('test'), producer(regex('[a-zA-Z0-9]{1,255}'))), 
      salary : value(consumer(1000), producer(regex('[0-9]{1,10}'))), 
      commissionPct : value(consumer(1000), producer(regex('[0-9]{1,10}'))) 
      ], 
      [id : 2, 
      firstName : value(consumer('test2'), producer(regex('[a-zA-Z0-9]{1,255}'))), 
      lastName : value(consumer('test2'), producer(regex('[a-zA-Z0-9]{1,255}'))), 
      phoneNumber : value(consumer('test2'), producer(regex('[a-zA-Z0-9]{1,255}'))), 
      salary : value(consumer(2000), producer(regex('[0-9]{1,10}'))), 
      commissionPct : value(consumer(2000), producer(regex('[0-9]{1,10}'))) 
     ] 

     ]) 
     headers { 
      contentType('application/json;charset=UTF-8') 
     } 
    } 
} 
] 

그리고 스택 트레이스를 들어 첫 번째 예를 들어, 사용 :

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.domain.Pageable]: Specified class is an interface 
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:99) 
    at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:142) 
    at org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.createAttribute(ServletModelAttributeMethodProcessor.java:80) 
    at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:102) 
    at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121) 
    at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:160) 
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:129) 
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) 
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
    at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:65) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
    at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167) 
    at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:134) 
    at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:155) 
    at com.jayway.restassured.module.mockmvc.internal.MockMvcRequestSenderImpl.performRequest(MockMvcRequestSenderImpl.java:174) 
    at com.jayway.restassured.module.mockmvc.internal.MockMvcRequestSenderImpl.sendRequest(MockMvcRequestSenderImpl.java:404) 
    at com.jayway.restassured.module.mockmvc.internal.MockMvcRequestSenderImpl.get(MockMvcRequestSenderImpl.java:582) 
    at com.jayway.restassured.module.mockmvc.internal.MockMvcRequestSenderImpl.get(MockMvcRequestSenderImpl.java:79) 
    at com.jayway.restassured.module.mockmvc.internal.MockMvcRequestSpecificationImpl.get(MockMvcRequestSpecificationImpl.java:744) 
    at com.jayway.restassured.module.mockmvc.internal.MockMvcRequestSpecificationImpl.get(MockMvcRequestSpecificationImpl.java:66) 
    at org.springframework.cloud.contract.verifier.tests.EmployeeTest.validate_get_all(EmployeeTest.java:47) 

어떻게해야합니까? 작동하도록 수정하려면 어떻게해야합니까?

답변

0

하지만 정확히 달성하려는 것은 무엇입니까? 이 예제에서 제시 한 것은 실제로 두 개의 요소가 포함 된 단일 본문입니다. 그게 네가 보내길 원하는거야? 또는 첫 번째 호출에서 첫 번째 요소와 두 번째 요소를 원할 것입니다. 그렇다면 시나리오 http://cloud.spring.io/spring-cloud-contract/1.0.x/#_scenarios으로 상태 보존 사례를 수행하십시오. 2 개의 별도 계약을해야합니다.

또 다른 질문은 페이징이 제대로 작동하는지 테스트해야하는 경우입니다. 계약서가 유효한지 테스트하고 싶다면 한 번만 요청을 보내면됩니다 (또는 테스트하려는 sth가 누락 되었습니까?).

업데이트 :이 피보험자 봄 데이터 + 나머지에 관한 생각

. -이 문제를 확인하시기 바랍니다 Pageable의 매개 변수와 Isolated Controller Test can't instantiate Pageable

+0

나는 url에 대한 계약을하고있다 :/api/employees? sort = id, desc '요소는 나의 계약의 반환이다. 그리고 작동하고 있기 때문에 페이징을 테스트하고 싶지 않습니다. 그걸로 계약을 맺고 싶습니다. –

+0

샘플을 어딘가에 게시하여 체크 아웃 할 수 있습니까? –

+0

아마도이 경우 Spring 데이터는 모의 데이터가 아닌 실제 컨텍스트가 필요합니까? 플러그인에서 EXPLICIT 모드를 사용해 보셨습니까? –

관련 문제