[英]Testing Spring rest controller with Spring Security OAuth
[英]Spring: JUnit Testing Rest Controller
我正在嘗試測試由 Angular 客戶端調用的 RestController。 我的 RestController 調用通過 SOAP 請求與 Web 服務通信的服務。 你有什么例子可以學習來測試這種東西嗎? 這是我的BookController代碼:
@RepositoryRestController
@RestController
@CrossOrigin(origins = "http://localhost:4200")
public class BookController {
@Autowired BookClient quoteClient;
GetBookListResponse lista = new GetBookListResponse();
BookService bookservice = new BookService();
@GetMapping(value = "/books")
public Object[] allBooks() {
lista = quoteClient.getBookList(true);
return lista.getBookList().toArray();
}
我想測試對BookClient類執行請求的allBook()函數。
public class BookClient extends WebServiceGatewaySupport {
public GetBookListResponse getBookList(boolean richiesta) {
GetBookListRequest request = new GetBookListRequest();
request.setRichiesta(true);
log.info("Getting all books: ");
try {
GetBookListResponse response = (GetBookListResponse) getWebServiceTemplate()
.marshalSendAndReceive("http://localhost:8080/ws/book", request,
new SoapActionCallback(
"http://spring.io/guides/gs-producing-web-service/GetBookListRequest"));
return response;
} catch (Exception ex) {
throw ex;}
}
在我的JUnit 測試類下面
@RunWith(MockitoJUnitRunner.class)
@WebMvcTest(value = BookController.class, excludeAutoConfiguration = {SecurityAutoConfiguration.class})
public class HttpRequestTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private BookController controller;
@MockBean
private BookClient client;
@Before
public void setup() {
mockMvc = MockMvcBuilders.standaloneSetup(this.controller).build();
}
@Test
@WithMockUser(username = "admin", password = "mypass", roles="ADMIN")
public void allBookShouldWork() throws Exception {
MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/books"))
.andExpect(MockMvcResultMatchers.status().isOk()).andDo(print()).andReturn();
assertThat(mvcResult.getResponse().getContentAsString()).isNotNull();
}
問題是響應的主體始終為空。
使用@Profile("!test")
注釋BookClient
將BookClient
擴展為BookClientImpl
(例如)並使用@Profile("test")
對其進行注釋 將@ActiveProfile("test")
添加到HttpRequestTest
這允許模擬soap客戶端並實現“測試”模擬響應;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.