Как вы тестируете свои фьючерсы, которые должны быть запущены во время выполнения 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? не отвечает на это, потому что просто говорит: Простой способ проверить асинхронный код может состоять в использовании выделенное время выполнения для каждого теста
Я делаю это!
Мой вопрос связан с тем, как тест может определить, работает ли будущее. Будущее нуждается в запущенной среде исполнения.
Тест пройден успешно, хотя будущее утверждает или вызывает err ().
Так что я могу сделать?