У меня веб-приложение работает хорошо. Теперь я пытаюсь написать для него единичный тест. Мой веб-приложение имеет следующие conversionServiceConversionService, не работающий в модульном тесте (весна 3.2)
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="....Class1ToStringConverter"/>
<bean class="....StringToClass1Converter"/>
</list>
</property>
</bean>
<mvc:annotation-driven conversion-service="conversionService" />
Который работает хорошо и когда я делаю запрос на
/somepath/{class1-object-string-representation}/xx
все работает, как ожидалось (строка был интерпретирован как объект Class1).
Моя проблема заключается в том, чтобы написать модульный тест для моего контроллера. ConversionService просто не используется, а весной просто скажите мне
Cannot convert value of type [java.lang.String] to required type [Class1]: no matching editors or conversion strategy found
Мой тест до сих пор:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"file:src/main/webapp/WEB-INF/applicationContext.xml", "file:src/main/webapp/WEB-INF/jpm-servlet.xml"})
@WebAppConfiguration()
public class GeneralTest {
@Autowired
private WebApplicationContext ctx;
private MockMvc mockMvc;
private TestDAO testDAO = org.mockito.Mockito.mock(TestDAO.class);
@Before
public void setUp() throws Exception {
Mockito.reset(testDAO);
mockMvc = MockMvcBuilders.webAppContextSetup(ctx).build();
}
@Test
public void testList() throws Exception {
final Test first = new Test(1L, "Hi", 10, new Date(), true);
final Test second = new Test(2L, "Bye", 50, new Date(), false);
first.setTest(second);
when(testDAO.list()).thenReturn(Arrays.asList(first, second));
mockMvc.perform(get("/jpm/class1-id1"))
.andExpect(status().isOk())
.andExpect(view().name("list"))
.andExpect(forwardedUrl("/WEB-INF/jsp/list.jsp"));
}
Что Im недостающее? Спасибо
Включили ли вы конверсию в «applicationContext.xml» или «jpm-servlet.xml»? Есть ли какие-либо подсказки в журнале? Возможность, о которой я мог подумать, заключается в том, что весна не нашла ваш конверсионный сервис и не использовала значение по умолчанию, так как насчет изменения «conversionService» как «conversionService1»? – Hippoom
conversionService находится в файле jpm-servlet.xml, но да, для некоторого неявного reaseon, тестовый контекст использует по умолчанию conversionService вместо моего :(выглядит как его игнорирование . I переименовали его, но не помогли –
jpaoletti
Не могли бы вы проверить свой журнал (заданный уровень для отладки), должно быть что-то вроде «define beans [conversionService1, mvcContentNegotiationManager», вы найдете другое создание конверсии? – Hippoom