У меня есть 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.<init>()
По-видимому, здесь что-то неправильно настроено, потому что мне не хватает всего уровня данных. Есть ли способ издеваться над PersistentEntityResourceAssembler
? Или другой подход, который я мог бы здесь использовать?
CustomerController
общедоступным? - person Sam Brannen   schedule 11.10.2017