如何使用多个websocket客户端测试warp过滤器



我正在尝试将多个测试客户端连接到一个服务器/筛选器。我试过了:

#[tokio::test]
async fn test_ws() {
let mut client1 = warp::test::ws()
.path("/api/ws/test")
.handshake(get_server())
.await
.expect("handshake");
let mut client2 = warp::test::ws()
.path("/api/ws/test")
.handshake(get_server())
.await
.expect("handshake");

get_server函数返回一个我想要测试的BoxedFilter。我试着储存和借用它,但没有用。这当前为每个客户端创建一个新的测试服务器。我希望客户端连接到同一个测试服务器。

任何warpFilter都应该实现Clone,其中包括BoxedFilter。因此,您应该创建";服务器";一次,并为每个测试客户端克隆:

#[tokio::test]
async fn test_ws() {
let server = get_server();
let mut client1 = warp::test::ws()
.path("/api/ws/test")
.handshake(server.clone())
.await
.expect("handshake");
let mut client2 = warp::test::ws()
.path("/api/ws/test")
.handshake(server.clone())
.await
.expect("handshake");
// ... test away!
}

相关内容

  • 没有找到相关文章

最新更新