Testing without a Network
Axum's Router implements Service<Request> — you can call it directly:
use tower::ServiceExt;
use axum::body::Body;
use http::{Request, StatusCode};
#[tokio::test]
async fn test_get_user() {
let app = create_app(test_state());
let response = app
.oneshot(
Request::builder()
.uri("/users/42")
.header("authorization", "Bearer test-token")
.body(Body::empty())
.unwrap(),
)
.await
.unwrap();
assert_eq!(response.status(), StatusCode::OK);
}