Skip to main content

any_match/
any_match.rs

1use futures_util::{SinkExt, StreamExt};
2use std::time::Duration;
3use tokio::time::timeout;
4use tokio_tungstenite::connect_async;
5use tokio_tungstenite::tungstenite::Message;
6use ws_mock::matchers::Any;
7use ws_mock::ws_mock_server::{WsMock, WsMockServer};
8
9#[tokio::main]
10pub async fn main() {
11    let server = WsMockServer::start().await;
12
13    WsMock::new()
14        .matcher(Any::new())
15        .respond_with(Message::Text("Hello World".into()))
16        .expect(1)
17        .mount(&server)
18        .await;
19
20    let (stream, _resp) = connect_async(server.uri().await)
21        .await
22        .expect("Connecting failed");
23
24    let (mut send, mut recv) = stream.split();
25
26    send.send(Message::from("some message")).await.unwrap();
27
28    let mut received = Vec::new();
29
30    while let Ok(Some(Ok(message))) = timeout(Duration::from_millis(100), recv.next()).await {
31        received.push(message);
32    }
33
34    server.verify().await;
35    assert_eq!(vec![Message::Text("Hello World".into())], received);
36}