У меня есть следующий контроллерSpring 3.2.2: MockMVC, возвращаемые порожние результаты
@Controller
@RequestMapping("/rest/transceptors")
public class TransceptorRestController
{
@Autowired
private TransceptorDao transceptorDao;
@RequestMapping(value="/get/{idTransceptor}", method=RequestMethod.GET)
public @ResponseBody Transceptor getOne(@PathVariable("idTransceptor") Long idTransceptor)
{
return transceptorDao.searchByIdTransceptor(idTransceptor);
}
}
Rest Этот контроллер работает правильно при работе в JBoss, и результаты, как и ожидалось. Я использую Postman (расширение тестирования REST для Google Chrome), и я могу получить правильные результаты в XML и JSON.
Но у меня проблема при использовании MockMVC для тестирования этого.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(
locations={
"classpath:test-servlet-context.xml"
})
@WebAppConfiguration
public class TransceptorRestControllerTest {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Before
public void setup()
{
mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}
@Test
public void testRoot() throws Exception
{
mockMvc.perform(get("/")).
andExpect(status().isOk());
}
@Test
public void testGet() throws Exception
{
mockMvc.perform(get("/rest/transceptors/get/1"))
.andExpect(status().isOk())
.andDo(print())
.andExpect(model().attribute("name", equals("Test_Name_1")));
}
Тест TestRoot работает нормально. Но, когда я пытаюсь использовать andExpect (model() ... я получаю сообщение «No ModelAndView Found»
При замене части модели() на конкретные ожидания для XML или JSON строки XML и JSON всегда возвращаются пусто.
я потратил дней, пытаясь понять это, и я довольно новыми для Java и новые для Spring. можете ли вы сказать мне, где я могу смотреть это исправить?
Как информация Дополнительно дворец, я (с sfj4l) повсюду, но при работе с Junit, сообщения журнала в DAO работают, сообщения журнала в самом тестовом модуле работают, но сообщения журнала внутри моего контроллера REST не отображаются.
Похоже, что функция GET сопоставлена, но содержимое функции никогда не выполняется и получает пустые ответы. Несмотря на это, мои призывы к isOk() успешны.
Если ModelAndView пуст, я понимаю это. Но не должно ли это возвращать XML или JSON-контент в теле? Я говорю это, потому что при использовании _xpath_ или _json_ функций с _andExpect() _ результаты также пусты. Я получаю сообщения типа «malformed xml в строке 1 столбец 1» для XML или «no json data» для JSON. Кроме того, при использовании _andDo (print()) тело возвращается также при проверке вывода консоли. – devnull
Кроме того, я должен добавить, что использование только _andExpect (content(). String (_ ... это тоже возвращает пустые результаты. Это не вопрос ModelAndView. – devnull
@devnull, такой же выпуск здесь. Вы когда-нибудь это выясняли? – Nikita