Avatar ·

Wie man asynchrone Funktionen mit Tokio in Rust richtig testet

Hallo! Ich habe angefangen, Rust und Tokio für asynchrone Programmierung zu lernen. Ich habe ein einfaches Modul für die Netzwerkarbeit geschrieben, verstehe aber nicht, wie man Tests für asynchrone Funktionen richtig schreibt. Hier ist ein Beispiel meines Codes: ```rust use tokio::time::{sleep, Duration}; pub async fn fetch_data(url: &str) -> Result { // Simulation einer Netzwerkanfrage sleep(Duration::from_millis(100)).await; if url.is_empty() { return Err("URL ist leer".to_string()); } Ok(format!("Daten von {}", url)) } #[cfg(test)] mod tests { use super::*; #[test] fn test_fetch_data() { let result = fetch_data("https://example.com"); // Hier gibt es einen Kompilierungsfehler } } ``` Wenn ich versuche, den Test auszuführen, gibt der Compiler einen Fehler aus: `the trait bound '(): futures::Future' is not satisfied`. Ich verstehe, dass asynchrone Funktionen ein Future zurückgeben und irgendwie ausgeführt werden müssen, aber ich weiß nicht wie. Ich habe versucht, `await` im Test hinzuzufügen, aber dann muss ich...