如何解决春季:JUnit测试Rest控制器
我正在尝试测试由Angular Client调用的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();
}
我想测试 allBook()函数,该函数对 BookClient 类执行请求。
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();
}
问题在于响应的主体始终为空。
解决方法
用BookClient
注释@Profile("!test")
将BookClient
扩展为BookClientImpl
(例如),并用@Profile("test")
进行注释
将@ActiveProfile("test")
添加到HttpRequestTest
这允许模拟soap客户端并实现“测试”模拟响应;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。