multithreading - Rust 官方教程带模拟测试的多线程 Web 服务器 - 空请求
问题描述
我正在尝试为官方多线程 Web 服务器教程编写集成测试。
在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.
解决方案
推荐阅读
- java - 如何实现连接条件?
- ruby-on-rails - 为 RabbitMQ 循环队列提供多个消费者的单片 Rails 应用程序的最佳实践?
- jquery - Ajax - 尝试替换而不是追加
- node.js - 使用NodeJS将事件从MongoDB传递到fullcalender不起作用
- python - 我的程序没有抛出异常,但它的行为很奇怪
- reactjs - react-slick 延迟加载具有多个实例的“渐进式”
- javascript - 克隆网站并使用 localhost 进行设置
- tableau-desktop - 如何根据用户在 Tableau 页面上选择的参数调用 2 个过程之一?
- laravel - Laravel guzzle post请求远程数据库错误
- javascript - 如何使用 R Shiny 中的箭头键/操作按钮移动渲染图像(由用户上传)?