Como testar corretamente funções assíncronas com Tokio em Rust?
Olá! Comecei a estudar Rust e Tokio para programação assíncrona. Escrevi um módulo simples para trabalhar com rede, mas não consigo entender como escrever testes para funções assíncronas.
Aqui está um exemplo do meu código:
```rust
use tokio::time::{sleep, Duration};
pub async fn fetch_data(url: &str) -> Result {
// Simulação de requisição de rede
sleep(Duration::from_millis(100)).await;
if url.is_empty() {
return Err("URL vazia".to_string());
}
Ok(format!("Dados de {}", url))
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_fetch_data() {
let result = fetch_data("https://example.com");
// Aqui ocorre erro de compilação
}
}
```
Quando tento executar o teste, o compilador retorna o erro: `the trait bound '(): futures::Future' is not satisfied`. Entendo que funções assíncronas retornam um Future, e precisam ser executadas de alguma forma, mas não sei como.
Tentei adicionar `await` no teste, mas então é necessário tornar
No answers yet.
Faça login para deixar uma resposta
Blogs