created_at2023-01-17 23:07:08.733101
updated_at2023-12-30 20:14:47.502639
descriptionFor spinning up and testing Axum servers
Joseph Lenton



Axum Test

Easy E2E testing for applications built on Axum

[![crate](]( [![docs](](
Using this library, you can host your application and query against it with requests. Then decode the responses, and assert what is returned. ```rust use ::axum::Router; use ::axum::routing::get; use ::axum_test::TestServer; async fn get_ping() -> &'static str { "pong!" } #[tokio::test] async fn it_should_get() { // Build an application with a route. let app = Router::new() .route("/ping", get(get_ping)); // Run the application for testing. let server = TestServer::new(app).unwrap(); // Get the request. let response = server .get("/ping") .await; assert_eq!(response.text(), "pong!"); } ``` The `TestServer` can run requests directly against your application with a mocked network, or the application can run on a random port (with real network reqeusts being made). In both cases allowing multiple servers to run in parallel, across your tests. This behaviour can be changed in the `TestServerConfig`, by selecting the `transport` to be used. ### Axum Compatability Axum Test requires the latest version of Axum (0.7). | Axum Version | Axum Test Version | |--------------|-------------------| | 0.7 (latest) | 14+ (latest) | | 0.6 | [13.4.1]( | ### Example You can find a thorough example in the [/examples folder](/examples/example-todo/). ### Request building Querying your application on the `TestServer` supports all of the common request building you would expect. - Serializing and deserializing Json and Form content using Serde - Cookie setting and reading - Access to setting and reading headers - Status code reading and assertions - Assertions for defining what you expect to have returned ### It also includes - Saving cookies returned for use across future requests. - Setting headers and query parameters for use across all TestRequests. - Can optionally run requests using a real web server. - Automatic status assertions for checking requests always succeed or fail. - Prettifying the assertion output. ## Crate Features Here are a list of all features so far that can be enabled: * `pretty-assertions` **on by default**, uses the [pretty assertions crate]( for the output to the `assert_*` functions.
Commit count: 86

cargo fmt