복붙노트

[SPRING] PersistentEntityResourceAssembler를 사용하는 사용자 지정 RepositoryRestController 테스트

SPRING

PersistentEntityResourceAssembler를 사용하는 사용자 지정 RepositoryRestController 테스트

일부 영구 엔터티에 대한 리소스를 노출하는 RepositoryRestController가 있습니다.

내 컨트롤러에 PersistentEntityResourceAssembler를 사용하여 자동으로 리소스를 생성 할 수있는 메서드가 있습니다.

@RepositoryRestController
@ExposesResourceFor(Customer.class)
@RequestMapping("/api/customers")
public class CustomerController {

    @Autowired
    private CustomerService service;

    @RequestMapping(method = GET, value="current")
    public ResponseEntity getCurrent(Principal principal Long id, PersistentEntityResourceAssembler assembler) {
        return ResponseEntity.ok(assembler.toResource(service.getForPrincipal(principal)));
    }
}

(고안된 예이지만, 유스 케이스의 관련없는 세부 사항에 대해 너무 많은 세부 사항을 저장하지 않는다)

내 컨트롤러에 대한 테스트를 작성하고 싶습니다. (실제 사용 사례는 실제로 테스트 할 가치가 있습니다.) @WebMvcTest를 사용할 계획입니다.

그래서 다음과 같은 테스트 클래스가 있습니다.

@RunWith(SpringRunner.class)
@WebMvcTest(CustomerController.class)
@AutoConfigureMockMvc(secure=false)
public class CustomerControllerTest {
    @Autowired
    private MockMvc client;

    @MockBean
    private CustomerService service;

    @Test
    public void testSomething() {
        // test stuff in here
    }

    @Configuration
    @Import(CustomerController.class)
    static class Config {
    }

}

하지만 java.lang.NoSuchMethodException : org.springframework.data.rest.webmvc.PersistentEntityResourceAssembler. () 예외가 발생합니다.

아마도 전체 데이터 레이어가 누락 되었기 때문에 여기에 제대로 구성되지 않은 것 같습니다. PersistentEntityResourceAssembler를 조롱하는 방법이 있습니까? 아니면 여기에서 사용할 수있는 또 다른 접근법입니까?

해결법

  1. ==============================

    1.나는 지금으로 끝났다 :

    나는 지금으로 끝났다 :

    @RunWith(SpringRunner.class)
    @SpringBootTest
    @AutoConfigureMockMvc
    

    테스트의 다운 사이트는 테스트가 전체 Spring 애플리케이션 컨텍스트를 시작한다는 것입니다 (그러나 서버는 제외).

  2. ==============================

    2.나는 약간 해키 한 해결책을 여기서 끝내었다.

    나는 약간 해키 한 해결책을 여기서 끝내었다.

    이상적입니다. PersistentEntityResourceAssembler에 의존 할 수있는 충분한 데이터 영역을 얻는 방법이 있는지 알고 싶습니다.

  3. from https://stackoverflow.com/questions/46658333/testing-a-custom-repositoryrestcontroller-that-uses-a-persistententityresourceas by cc-by-sa and MIT license