Я использую простой конвертер для преобразования строки в enum.Вот пользовательский конвертер:
@Component
public class SessionStateConverter implements Converter<String, UserSessionState> {
@Override
public UserSessionState convert(String source) {
try {
return UserSessionState.valueOf(source.toUpperCase());
} catch (Exception e) {
LOG.debug(String.format("Invalid UserSessionState value was provided: %s", source), e);
return null;
}
}
}
В настоящее время я использую UserSessionState в качестве PathVariable
в моем контроллере покоя.Реализация работает как положено.Однако, когда я пытаюсь выполнить модульное тестирование остального контроллера, кажется, что преобразование не работает и он не затрагивает метод контроллера.
@RunWith(MockitoJUnitRunner.class)
public class MyTest {
private MockMvc mockMvc;
@Mock
private FormattingConversionService conversionService;
@InjectMocks
private MynController controller;
@Before
public void setup() {
conversionService.addConverter(new SessionStateConverter());
mockMvc = MockMvcBuilders.standaloneSetup(controller).setConversionService(conversionService).build();
}
@Test
public void testSetLoginUserState() throws Exception {
mockMvc.perform(post("/api/user/login"));
}
}
В режиме отладки я получаю следующую ошибку:
nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'rest.api.UserSessionState': no matching editors or conversion strategy found
На мой взгляд, макет сервиса конвертации не работает.Есть идеи?