如本文所述,当您想要测试应用程序的服务器端时,应使用:MockMvc
Spring MVC 测试基于模拟请求和响应构建,不需要正在运行的 servlet 容器。主要区别在于,实际的 Spring MVC 配置是通过 TestContext 框架加载的,并且请求是通过实际调用运行时使用的所有相同的 Spring MVC 基础结构来执行的。spring-test
DispatcherServlet
例如:
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration("servlet-context.xml")
public class SampleTests {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Before
public void setup() {
this.mockMvc = webAppContextSetup(this.wac).build();
}
@Test
public void getFoo() throws Exception {
this.mockMvc.perform(get("/foo").accept("application/json"))
.andExpect(status().isOk())
.andExpect(content().contentType("application/json"))
.andExpect(jsonPath("$.name").value("Lee"));
}}
当您想要测试 Rest 客户端应用程序时,您应该使用:RestTemplate
如果你有使用 的代码,你可能想要测试它,你可以以正在运行的服务器为目标或模拟 RestTemplate。客户端 REST 测试支持提供了第三种选择,即使用实际,但使用自定义配置它,该自定义根据实际请求检查期望并返回存根响应。RestTemplate
RestTemplate
ClientHttpRequestFactory
例:
RestTemplate restTemplate = new RestTemplate();
MockRestServiceServer mockServer = MockRestServiceServer.createServer(restTemplate);
mockServer.expect(requestTo("/greeting"))
.andRespond(withSuccess("Hello world", "text/plain"));
// use RestTemplate ...
mockServer.verify();
另请阅读此示例