You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Mocks defined in Rust using a simple, ergonomic API
Provides first-class support for streaming
Supports gRPC unary, client-streaming, server-streaming, and bidirectional-streaming methods
Match requests to mock responses using built-in matchers or custom matchers
Fully asynchronous
Getting Started
Add mocktail to Cargo.toml as a development dependency:
[dev-dependencies]
mocktail = "0.3.0"
Basic usage example:
use mocktail::prelude::*;#[tokio::test]asyncfntest_example() -> Result<(),Box<dyn std::error::Error>>{// Create a mock setletmut mocks = MockSet::new();// Build a mock that returns a "hello world!" response// to POST requests to the /hello endpoint with the text "world"// in the body.
mocks.mock(|when, then| {
when.post().path("/hello").text("world");
then.text("hello world!");});// Create and start a mock serverletmut server = MockServer::new_http("example").with_mocks(mocks);
server.start().await?;// Create a clientlet client = reqwest::Client::builder().http2_prior_knowledge().build()?;// Send a request that matches the mock created abovelet response = client
.post(server.url("/hello")).body("world").send().await?;assert_eq!(response.status(), http::StatusCode::OK);let body = response.text().await?;assert_eq!(body,"hello world!");// Send a request that doesn't match a mocklet response = client.get(server.url("/nope")).send().await?;assert_eq!(response.status(), http::StatusCode::NOT_FOUND);// Mocks can also be registered to the server directly// Register a mock that will match the request above that returned 404
server.mock(|when, then| {
when.get().path("/nope");
then.text("yep!");});// Send the request again, it should now matchlet response = client.get(server.url("/nope")).send().await?;assert_eq!(response.status(), http::StatusCode::OK);let body = response.text().await?;assert_eq!(body,"yep!");// Mocks can be cleared from the server, enabling server reuse
server.mocks.clear();Ok(())}
See the book and examples in the mocktail-tests crate.