springboot 模拟客户端请求controller的插件mocmvc(了解)

一.MocMvc作用

        MockMvc实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用,这样可以使得测试速度快、不依赖网络环境,而且提供了一套验证的工具,这样可以使得请求的验证统一而且很方便。

  对模块进行集成测试时希望能够通过输入URL对Controller进行测试,如果通过启动服务器,建立http client进行测试,这样会使得测试变得很麻烦,比如,启动速度慢,测试验证不方便,依赖网络环境等,所以为了可以对Controller进行测试,我们引入了MockMVC。

https://www.cnblogs.com/jpfss/p/10950904.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要引入spring-boot-starter-websocket依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> ``` 然后,创建一个WebSocket配置类,用来配置WebSocket相关的类: ```java @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(myWebSocketHandler(), "/my-websocket"); } @Bean public WebSocketHandler myWebSocketHandler() { return new MyWebSocketHandler(); } } ``` 其中,MyWebSocketHandler是自定义的WebSocket处理器,处理来自客户端的消息。 下面是MyWebSocketHandler的实现: ```java public class MyWebSocketHandler implements WebSocketHandler { private static final Logger logger = LoggerFactory.getLogger(MyWebSocketHandler.class); private final List<WebSocketSession> sessions = new CopyOnWriteArrayList<>(); @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { logger.info("WebSocket连接建立: " + session.getId()); sessions.add(session); } @Override public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception { logger.info("收到消息: " + message.getPayload()); for (WebSocketSession s : sessions) { if (s.isOpen() && !s.getId().equals(session.getId())) { s.sendMessage(message); } } } @Override public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { logger.error("WebSocket连接异常: " + session.getId(), exception); sessions.remove(session); } @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception { logger.info("WebSocket连接关闭: " + session.getId()); sessions.remove(session); } @Override public boolean supportsPartialMessages() { return false; } } ``` 这里实现了WebSocketHandler接口,并在afterConnectionEstablished方法中记录连接,handleMessage方法中处理消息,handleTransportError和afterConnectionClosed方法中移除连接。 最后,在Controller中注入WebSocketHandler,即可通过WebSocket与客户端进行交互: ```java @RestController public class MyController { @Autowired private WebSocketHandler webSocketHandler; @GetMapping("/send-message") public String sendMessage(@RequestParam String message) { for (WebSocketSession session : ((MyWebSocketHandler) webSocketHandler).sessions) { try { session.sendMessage(new TextMessage(message)); } catch (IOException e) { e.printStackTrace(); } } return "OK"; } } ``` 这里定义了一个/send-message接口,用来向所有连接的客户端发送消息。在Controller中注入WebSocketHandler,并通过sessions属性获取所有连接的WebSocketSession,然后通过sendMessage方法发送消息。 至此,一个可以通过WebSocket连接并互相发送信息的Spring Boot项目就完成了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值