[英]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.