您如何测试打算在 Tokio 运行时运行的期货?
fn fut_dns() -> impl Future<Item = (), Error = ()> {
let f = dns::lookup("www.google.de", "127.0.0.1:53");
f.then(|result| match result {
Ok(smtptls) => {
println!("{:?}", smtptls);
assert_eq!(smtptls.version, "TLSRPTv1");
assert!(smtptls.rua.len() > 0);
assert_eq!(smtptls.rua[0], "mailto://...");
ok(())
}
Err(e) => {
println!("error: {:?}", e);
err(())
}
})
}
#[test]
fn smtp_log_test() {
tokio::run(fut_dns());
assert!(true);
}
未来运行,未来的线程在assert
. 您可以在控制台中阅读恐慌,但test
无法识别tokio::run
.
我如何测试绑定到 tokio TcpStream 的未来?没有回答这个问题,因为它只是说:测试异步代码的简单方法可能是为每个测试使用专用运行时
我这样做!
我的问题与测试如何检测未来是否有效有关。未来需要一个启动的运行时环境。
尽管 future 断言或调用 err(),但测试成功。
那么我能做什么呢?