相当于 MockHttpServletRequestBuilder 用于 Spring 中的 websockets 测试



相当于Websockets的MockHttpServletRequestBuilder。 即在我想测试 Websockets 的情况下,我想测试一个长时间运行的 websocket 应用程序,并避免在应该进行升级的第一个 http get 调用后覆盖 SecurityContex 的情况。对于普通的 rest http 应用程序,到目前为止,这是通过利用 SecurityMockMvcRequestPostProcessor 完成的。 此处使用 SecurityMockMvcRequestPostProcessor 的示例

但是当我想测试一个长时间运行的websocket应用程序时该怎么办,即我想为websockets创建类似MockHttpServletRequestBuilder的东西。春天已经有这样的东西了吗?或者有没有办法使用MockHttpServletRequestBuilder来实现这个目的?即目标是创建 websocket 端点,并避免在升级后清除 SecurityContex 的情况。

我找到了一些替代方案,例如通过此处描述的会话,但这对我来说并不是真正的替代方案,因为使用方法级安全性的代码不起作用,因为 SecurityContex 正在被更改。

这似乎可以通过提供测试袜子配置来完成。前任

@EnableWebSocketMessageBroker
static class TestWebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Autowired
Environment env;
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/portfolio").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
//          registry.enableSimpleBroker("/queue/", "/topic/");
registry.enableStompBrokerRelay("/queue/", "/topic/");
registry.setApplicationDestinationPrefixes("/app");
}
}

完整的课程可以在这里找到: https://github.com/rstoyanchev/spring-websocket-portfolio/blob/master/src/test/java/org/springframework/samples/portfolio/web/context/ContextPortfolioControllerTests.java

以下是 spring 提供的一些其他示例,演示了测试 Web 套接字的 3 种不同方法: https://github.com/rstoyanchev/spring-websocket-portfolio/tree/master/src/test/java/org/springframework/samples/portfolio/web

最新更新