rustapi-testing 0.1.275

Testing utilities for RustAPI applications. Provides checking helpers, test servers, and fluid assertions.
Documentation

rustapi-testing

Lens: "The Auditor"
Philosophy: "Trust, but verify."

A fluid, ergonomic test harness for RustAPI applications. Don't just test your logic; test your endpoints.

The TestClient

Integration testing is often painful. We make it easy. TestClient spawns your RustApi application without binding to a real TCP port, communicating directly with the service layer.

let client = TestClient::new(app);

Fluent Assertions

The client provides a fluent API for making requests and asserting responses.

client.post("/login")
    .json(&credentials)
    .send()
    .await
    .assert_status(200)
    .assert_header("Set-Cookie", "session=...");

Mocking Services

Because rustapi-rs relies heavily on Dependency Injection via State<T>, you can easily inject mock implementations of your database or downstream services when creating the RustApi instance for your test.

Full Example

#[cfg(test)]
mod tests {
    use rustapi_testing::TestClient;
    use rustapi_rs::prelude::*;

    #[tokio::test]
    async fn test_create_user() {
        // 1. Setup app
        let app = RustApi::new().mount_route(create_user_route());
        let client = TestClient::new(app);

        // 2. Execute
        let response = client.post("/users")
            .json(&json!({ "name": "Alice" }))
            .send()
            .await;

        // 3. Assert
        response
            .assert_status(StatusCode::OK)
            .assert_json_path("$.id", 1);
    }
}