Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java TextWebSocketHandler的集成测试_Java_Spring_Testing_Integration_Spring Websocket - Fatal编程技术网

Java TextWebSocketHandler的集成测试

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

我在spring中搜索带有套接字处理程序的WebSocket的集成测试,但找不到。 如何编写测试来检查连接是否建立以及message.sendMessage()是否实际发送消息。有人能给我举个例子,说明我是如何做到这一点的吗

WebSocketConfig:

@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;
    }

}