![](/img/trans.png)
[英]Spring MockMvc Test : NullPointerException for mvc.perform()
[英]Spring Test MockMvc perform request on external URL
我正在尝试对当前上下文之外的 URL 执行 POST 请求,看起来 Spring 无法理解它。
测试代码:
String content = mvc
.perform(post("http://some-external-url.com:8080/somepath)
.header("Authorization", authorization)
.contentType(MediaType.APPLICATION_FORM_URLENCODED)
.param("username", username)
.param("password", password)
.andExpect(status().isOk())
.andReturn().getResponse().getContentAsString();
在当前上下文中就像一个魅力。 但是根本无法访问远程服务。 似乎忽略了“ http://some-external-url.com:8080 ”部分。
模拟创建代码:
mvc = MockMvcBuilders.webAppContextSetup(context).build();
有没有办法让它工作? 因为使用标准的 Java HttpUrlConnection 类是一个巨大的痛苦。
不。没有办法让 Spring MVC 测试框架与外部服务器(或任何实际服务器)一起工作。
Spring MVC 测试框架为使用可与 JUnit、TestNG 或任何其他测试框架一起使用的 fluent API 测试 Spring MVC 代码提供了一流的支持。 它建立在来自 spring-test 模块的 Servlet API 模拟对象上,因此不使用正在运行的 Servlet 容器。
最后一句咒语出来:Spring MVC的测试没有使用正在运行的Servlet容器。 事实上,它不能与正在运行的 Servlet 容器或任何类型的实际服务器(本地或远程)一起使用。
作为替代方案,如果您必须针对外部服务器进行测试,那么您可以考虑在这些特殊情况下使用REST Assured而不是 Spring MVC Test。
您可以使用new RestTemplate().getForObject("http://some-external-url.com:8080/somepath", String.class)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.