我想在當前上下文之外的URL上執行POST請求,並且它看起來像Spring無法理解它。春季測試MockMvc對外部URL執行請求
測試代碼:
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類是一個巨大的痛苦。
你爲什麼期望MockMvc可以在外部URL上工作? – chrylis
爲什麼不呢?這只是一個測試工具,對吧?首先要正確測試我的控制器,我應該從外部Web服務獲取一些信息。我不認爲這是非常罕見的情況。 –
這是一個測試工具,非常具體地模擬Servlet堆棧的一個小的孤立部分。在任何地方都沒有涉及HTTP客戶端,只有HTTP服務器的一部分。你可能會說,因爲Selenium是一個測試工具,所以它應該修改數據庫模式。 – chrylis