JavaSpringMVC控制器测试打印结果JSON字符串
嗨,我有一个Spring mvc控制器
@RequestMapping(value = "/jobsdetails/{userId}", method = RequestMethod.GET)
@ResponseBody
public List<Jobs> jobsDetails(@PathVariable Integer userId,HttpServletResponse response) throws IOException {
try {
Map<String, Object> queryParams=new LinkedHashMap<String, Object>();
queryParams.put("userId", userId);
jobs=jobsService.findByNamedQuery("findJobsByUserId", queryParams);
} catch(Exception e) {
logger.debug(e.getMessage());
response.sendError(HttpServletResponse.SC_BAD_REQUEST);
}
return jobs;
}
我想看看运行这个程序时JSON字符串的样子。我写了这个测试用例
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration("classpath:webapptest")
@ContextConfiguration(locations = {"classpath:test-applicationcontext.xml"})
public class FindJobsControllerTest {
private MockMvc springMvc;
@Autowired
WebApplicationContext wContext;
@Before
public void init() throws Exception {
springMvc = MockMvcBuilders.webAppContextSetup(wContext).build();
}
@Test
public void documentsPollingTest() throws Exception {
ResultActions resultActions = springMvc.perform(MockMvcRequestBuilders.get("/jobsdetails/2").accept(MediaType.APPLICATION_JSON));
System.out.println(/* Print the JSON String */); //How ?
}
}
如何获取JSON字符串
我使用的是Spring3,codehause Jackson 1.8.4
# 1 楼答案
对我来说,当我使用下面的代码时,它起了作用:
成功了!!:D
希望我能帮助对方回答我的问题
# 2 楼答案
您可以在设置
MockMvc
实例时启用每个测试方法的打印响应注意上面代码的
.alwaysDo(MockMvcResultHandlers.print())
部分。这样可以避免为每个测试方法应用打印处理程序# 3 楼答案
如果您正在测试控制器,则不会得到JSon结果,该结果由视图返回。您是否可以测试视图(或者测试控制器,然后再测试视图),或者启动servlet contrainer(例如使用Cargo),并在HTTP级别进行测试,这是检查实际情况的好方法
# 4 楼答案
诀窍是使用
andReturn()
# 5 楼答案
请尝试以下代码: