pub struct TestClient { /* private fields */ }Implementations§
Source§impl TestClient
impl TestClient
pub async fn new(app: Application) -> Self
pub fn from_router(router: Router) -> Self
Turn on cookie persistence: Set-Cookie headers from each response are
stashed and replayed on subsequent requests as a Cookie: header.
Enables happy-path multi-step flow testing (login form → CSRF-protected
POST, session lifecycle, etc.) without per-test header juggling.
let client = TestClient::new(app).await.with_cookie_jar();
client.post_form("/login", &[("email", "a@b.com"), ("password", "...")]).await
.assert_redirect_to("/dashboard");
client.get("/dashboard").await.assert_ok(); // session cookie carried throughCookie semantics are simplified: name/value pairs only — no
Path / Domain / Expires / Max-Age honoring (tests run in
sub-second windows where TTL doesn’t matter; everything’s same-host
since it’s all in-process). An empty value clears the cookie, matching
the browser convention for Set-Cookie: name=; Max-Age=0.
Snapshot of the cookie jar’s current contents. Useful for assertions
like assert!(client.cookies().iter().any(|(n, _)| n == "session_id")).
Returns an empty Vec if cookie persistence wasn’t enabled.
Wipe the cookie jar mid-test (e.g. to simulate a fresh browser session). No-op if cookie persistence wasn’t enabled.
Sourcepub fn with_header(self, name: &str, value: &str) -> Self
pub fn with_header(self, name: &str, value: &str) -> Self
Attach a header to every subsequent request — e.g. Authorization.
Sourcepub fn with_bearer(self, token: &str) -> Self
pub fn with_bearer(self, token: &str) -> Self
Shortcut: set Authorization: Bearer <token> on every request.
Sourcepub fn with_ajax(self) -> Self
pub fn with_ajax(self) -> Self
Shortcut: declare this is an AJAX request (matches Laravel’s ->ajax()).
pub async fn get(&self, path: &str) -> TestResponse
pub async fn post(&self, path: &str, body: Value) -> TestResponse
pub async fn put(&self, path: &str, body: Value) -> TestResponse
pub async fn patch(&self, path: &str, body: Value) -> TestResponse
pub async fn delete(&self, path: &str) -> TestResponse
Sourcepub async fn post_form(&self, path: &str, form: &[(&str, &str)]) -> TestResponse
pub async fn post_form(&self, path: &str, form: &[(&str, &str)]) -> TestResponse
Send a form-urlencoded POST. Mirrors Laravel’s ->post('/login', ['email' => ...]).
Sourcepub async fn post_bytes(
&self,
path: &str,
body: impl Into<Bytes>,
content_type: &str,
) -> TestResponse
pub async fn post_bytes( &self, path: &str, body: impl Into<Bytes>, content_type: &str, ) -> TestResponse
Send a raw-bytes POST with an explicit Content-Type. Use for binary
protocol endpoints (CBOR, protobuf, msgpack, etc.) — anything the JSON
post() helper would mangle.
Sourcepub async fn put_bytes(
&self,
path: &str,
body: impl Into<Bytes>,
content_type: &str,
) -> TestResponse
pub async fn put_bytes( &self, path: &str, body: impl Into<Bytes>, content_type: &str, ) -> TestResponse
post_bytes for PUT.
Sourcepub async fn patch_bytes(
&self,
path: &str,
body: impl Into<Bytes>,
content_type: &str,
) -> TestResponse
pub async fn patch_bytes( &self, path: &str, body: impl Into<Bytes>, content_type: &str, ) -> TestResponse
post_bytes for PATCH.
Auto Trait Implementations§
impl Freeze for TestClient
impl !RefUnwindSafe for TestClient
impl Send for TestClient
impl Sync for TestClient
impl Unpin for TestClient
impl UnsafeUnpin for TestClient
impl !UnwindSafe for TestClient
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more