Java TextWebSocketHandler的集成测试
我在spring中搜索带有套接字处理程序的WebSocket的集成测试,但找不到。 如何编写测试来检查连接是否建立以及message.sendMessage()是否实际发送消息。有人能给我举个例子,说明我是如何做到这一点的吗 WebSocketConfig:Java TextWebSocketHandler的集成测试,java,spring,testing,integration,spring-websocket,Java,Spring,Testing,Integration,Spring Websocket,我在spring中搜索带有套接字处理程序的WebSocket的集成测试,但找不到。 如何编写测试来检查连接是否建立以及message.sendMessage()是否实际发送消息。有人能给我举个例子,说明我是如何做到这一点的吗 WebSocketConfig: @Configuration @EnableWebSocket @EnableConfigurationProperties(ComPortProperties.class) public class WebSocketConfig imp
@Configuration
@EnableWebSocket
@EnableConfigurationProperties(ComPortProperties.class)
public class WebSocketConfig implements WebSocketConfigurer {
private final Message message = new Message("text");
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new SocketHandler(message), "/data");
}
@Bean
ApplicationRunner applicationRunner(ComPortProperties ComPortProperties){
return args ->{
System.out.println(ComPortProperties);
} ;
}
}
索克德勒:
@Component
public class SocketHandler extends TextWebSocketHandler {
private static final Logger logger = LoggerFactory.getLogger(SocketHandler.class);
Map<WebSocketSession, Boolean> sessions = new HashMap<>();
private Message message;
public SocketHandler(){
}
public SocketHandler(Message message){
this.message = message;
}
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
InetSocketAddress clientAddress = session.getRemoteAddress();
logger.info("Accepted connection from: {}:{}", clientAddress.getHostString(), clientAddress.getPort());
sessions.put(session, true);
while (sessions.get(session)){
session.sendMessage(new TextMessage(message.sendMessage()));
}
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
logger.info("Connection closed by {}:{}", session.getRemoteAddress().getHostString(),
session.getRemoteAddress().getPort());
super.afterConnectionClosed(session, status);
sessions.put(session, false);
}
}
应该有一个已知的错误,无论发生什么,它都会使测试失败。这是因为它在使用套接字处理程序准备应用程序上下文时失败。这就是我所知道的,看看他们是否在最近发布的版本中解决了这个问题
public class Message {
private String text;
public Message(String text){
this.text = text;
}
public String sendMessage(){
return text;
}
}