Crate trillium_testing

source ·
Expand description

testing utilities for trillium applications.

this crate is intended to be used as a development dependency.

use trillium_testing::prelude::*;
use trillium::{Conn, conn_try};
async fn handler(mut conn: Conn) -> Conn {
    let request_body = conn_try!(conn.request_body_string().await, conn);
    conn.with_body(format!("request body was: {}", request_body))
        .with_status(418)
        .with_response_header("request-id", "special-request")
}

assert_response!(
    post("/").with_request_body("hello trillium!").on(&handler),
    Status::ImATeapot,
    "request body was: hello trillium!",
    "request-id" => "special-request",
    "content-length" => "33"
);

§Features

You must enable a runtime feature for trillium testing

§Tokio:

[dev-dependencies]
# ...
trillium-testing = { version = "0.2", features = ["tokio"] }

§Async-std:

[dev-dependencies]
# ...
trillium-testing = { version = "0.2", features = ["async-std"] }

§Smol:

[dev-dependencies]
# ...
trillium-testing = { version = "0.2", features = ["smol"] }

Re-exports§

  • pub use futures_lite;

Modules§

Macros§

Structs§

Enums§

  • HTTP request methods.
  • HTTP response status codes.

Traits§

Functions§

  • Runs the global and the local executor on the current thread
  • runtime client config
  • runtime server config
  • build a connector from this handler
  • a test harness for use with [test_harness]
  • initialize a handler
  • smol-based spawn variant that finishes whether or not the returned future is dropped
  • Starts a trillium handler bound to a random available port on localhost, run the async tests provided as the second argument, and then shut down the server. useful for full integration tests that actually exercise the tcp layer.
  • open an in-memory connection to this handler and call an async function with an open BoxedTransport

Type Aliases§