pub struct TestClient<H> { /* private fields */ }Expand description
Test client for in-process HTTP testing.
TestClient wraps a handler and provides an HTTP-like interface
for testing without network overhead. It maintains a cookie jar
for session persistence across requests.
§Thread Safety
TestClient is thread-safe and can be shared across test threads.
The internal cookie jar is protected by a mutex.
§Example
let client = TestClient::new(my_handler);
// Simple GET request
let response = client.get("/users").send();
assert_eq!(response.status(), StatusCode::OK);
// POST with JSON body
let response = client
.post("/users")
.json(&CreateUser { name: "Alice" })
.send();
assert_eq!(response.status(), StatusCode::CREATED);
// Request with headers
let response = client
.get("/protected")
.header("Authorization", "Bearer token123")
.send();Implementations§
Source§impl<H: Handler + 'static> TestClient<H>
impl<H: Handler + 'static> TestClient<H>
Returns a reference to the cookie jar.
Note: The jar is protected by a mutex, so concurrent access is safe but may block.
Clears all cookies from the jar.
Sourcepub fn get(&self, path: &str) -> RequestBuilder<'_, H>
pub fn get(&self, path: &str) -> RequestBuilder<'_, H>
Creates a GET request builder.
Sourcepub fn post(&self, path: &str) -> RequestBuilder<'_, H>
pub fn post(&self, path: &str) -> RequestBuilder<'_, H>
Creates a POST request builder.
Sourcepub fn put(&self, path: &str) -> RequestBuilder<'_, H>
pub fn put(&self, path: &str) -> RequestBuilder<'_, H>
Creates a PUT request builder.
Sourcepub fn delete(&self, path: &str) -> RequestBuilder<'_, H>
pub fn delete(&self, path: &str) -> RequestBuilder<'_, H>
Creates a DELETE request builder.
Sourcepub fn patch(&self, path: &str) -> RequestBuilder<'_, H>
pub fn patch(&self, path: &str) -> RequestBuilder<'_, H>
Creates a PATCH request builder.
Sourcepub fn options(&self, path: &str) -> RequestBuilder<'_, H>
pub fn options(&self, path: &str) -> RequestBuilder<'_, H>
Creates an OPTIONS request builder.
Sourcepub fn head(&self, path: &str) -> RequestBuilder<'_, H>
pub fn head(&self, path: &str) -> RequestBuilder<'_, H>
Creates a HEAD request builder.
Sourcepub fn request(&self, method: Method, path: &str) -> RequestBuilder<'_, H>
pub fn request(&self, method: Method, path: &str) -> RequestBuilder<'_, H>
Creates a request builder with a custom method.
Sourcepub fn override_dependency<T, F, Fut>(&self, f: F)where
T: FromDependency,
F: Fn(&RequestContext, &mut Request) -> Fut + Send + Sync + 'static,
Fut: Future<Output = Result<T, T::Error>> + Send + 'static,
pub fn override_dependency<T, F, Fut>(&self, f: F)where
T: FromDependency,
F: Fn(&RequestContext, &mut Request) -> Fut + Send + Sync + 'static,
Fut: Future<Output = Result<T, T::Error>> + Send + 'static,
Register a dependency override for this test client.
Sourcepub fn override_dependency_value<T>(&self, value: T)where
T: FromDependency,
pub fn override_dependency_value<T>(&self, value: T)where
T: FromDependency,
Register a fixed dependency override value.
Sourcepub fn clear_dependency_overrides(&self)
pub fn clear_dependency_overrides(&self)
Clear all registered dependency overrides.