Cómo probar correctamente funciones asíncronas con Tokio en Rust
¡Hola! Empecé a estudiar Rust y Tokio para programación asíncrona. Escribí un módulo simple para trabajar con la red, pero no entiendo cómo escribir pruebas para funciones asíncronas.
Aquí hay un ejemplo de mi código:
```rust
use tokio::time::{sleep, Duration};
pub async fn fetch_data(url: &str) -> Result {
// Simulación de una solicitud de red
sleep(Duration::from_millis(100)).await;
if url.is_empty() {
return Err("URL vacía".to_string());
}
Ok(format!("Datos desde {}", url))
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_fetch_data() {
let result = fetch_data("https://example.com");
// Aquí hay un error de compilación
}
}
```
Cuando intento ejecutar la prueba, el compilador muestra un error: `the trait bound '(): futures::Future' is not satisfied`. Entiendo que las funciones asíncronas devuelven un Future, y necesito ejecutarlo de alguna manera, pero no sé cómo.
Intenté agregar `await` en la prueba, pero entonces la prueba misma debe ser asíncrona. Rust