Rust официальный учебник многопоточного веб-сервера с тестами на mockito - пустой запрос - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь написать интеграционные тесты для официального руководства по многопоточному веб-серверу.

В integrational_tests.rs у меня есть что-то вроде этого:

fn connect_and_send_request() {
    let stream = TcpStream::connect("127.0.0.1:7879").unwrap();
    let mut writer = BufWriter::new(stream);
    let s = b"GET / HTTP/1.1\r\n\r\n";
    writer.write(s).unwrap();
    writer.flush().unwrap();
}

fn test_main_route() {
    let server_address = [SocketAddr::from(([127, 0, 0, 1], 7879))];

    let listener: TcpListener = TcpListener::bind(&server_address[..]).unwrap();
    let pool = ThreadPool::new(4);

    connect_and_send_request();

    for stream in listener.incoming() {
        let mut stream = stream.unwrap();

        pool.execute(|| {
            let main_mock = mock("GET", "/").create();
            handle_connection(stream);
            println!("Main mock {}", main_mock);
            main_mock.assert();
        });
    }

    fn handle_connection(mut stream: TcpStream) {
        let mut response = [0; 512];
        stream.read(&mut response).unwrap();
        stream.flush().unwrap();
        println!("Request: {}", String::from_utf8_lossy(&response[..]));
    }
}

В моем "Запросе" println! я вижу строку моего запроса, но main_mock.assert() на основе Mockito завершается неудачно:

thread <unnamed> panicked at assertion failed: (left == right) 
expect GET / ... but recived 0.
...