[英]How to test spring RESTful MVC controller methods?
我在Spring Tool Suite IDE中创建了一个简单的Spring MVC项目,因此项目的结构是
例如,我需要测试我的控制器方法
@RequestMapping(value = "/references/{id}", method = RequestMethod.GET)
public @ResponseBody GAReference getReference(@PathVariable("id") int id) {
return server.getReference(id);
}
服务器是一个接口,它具有实现(ServerTestImpl),并且在MainControllerContext.xml中存储有一个ServerTestImpl bean。
我希望测试类在此答案中看起来像,但我的项目结构中没有springDispatcher-servlet.xml。 所以,我认为这可能像
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:/MainControllerContext.xml")
@WebAppConfiguration
public class MainControllerTest {
private MockMvc mockMvc ;
@Autowired
WebApplicationContext wac;
@Autowired
private ServerTestImpl server;
@Before
public void setUp() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).dispatchOptions(true).build();
}
@Test
public void testGetReference() {
try {
mockMvc.perform(get("/references/5"))
.andExpect(status().isOk())
.andExpect(jsonPath("$", hasSize(2)))
.andExpect(jsonPath("$[0].id", is(1)))
.andExpect(jsonPath("$[0].description", is("Lorem ipsum")))
.andExpect(jsonPath("$[0].title", is("Foo")))
.andExpect(jsonPath("$[1].id", is(2)))
.andExpect(jsonPath("$[1].description", is("Lorem ipsum")))
.andExpect(jsonPath("$[1].title", is("Bar")));
} catch (Exception e) {
e.printStackTrace();
}
}
}
如何使用该项目结构测试我的控制器? 谢谢。
通过使用org.springframework.web.client.RestTemplate,我们可以测试spring rest / spring-ws应用程序。
尝试在安装程序中使用以下代码段
@Before公共void setUp($ basecontroller controllerobj)
{this.mockMvc = MockMvcBuilders.standAloneSetup(controllerobj).dispatchOptions(true).build(); }
$ basecontroller =与其他控制器位于同一软件包中的控制器的基本控制器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.