Моя проблема в том, что серверный процесс не завершается после последнего интеграционного теста.
В integration.rs
у меня:
lazy_static! {
static ref SERVER: Arc<Mutex<duct::ReaderHandle>> = {
println!("Starting server");
Arc::new(Mutex::new(
cmd!("cargo", "run", "--", "13000")
.reader()
.expect("Valid server"),
))
};
}
async fn wait_for_server() {
lazy_static::initialize(&SERVER);
// Code to wait
}
#[tokio::test]
async fn integration_test_query_amount() -> Result<()> {
wait_for_server().await;
let client = reqwest::Client::new();
// Etc...
}
Тесты работают, но сервер продолжает работать после завершения вызова cargo test
. Есть ли хороший рецепт для запуска и выключения такого сервера?