Crate stubr[−][src]
Expand description
This crate proposes a reimplementation of Wiremock. Its aims at converting Wiremock stubs into wiremock-rs mocks.
You can also use stubr-build to share stubs between a producer project and a consumer one.
Also available as a cli.
use it
use isahc; use stubr::*; use asserhttp::*; #[async_std::test] #[stubr::mock] async fn simple_async() { // supply a directory containing json stubs. Invalid files are just ignored let stubr = Stubr::start("tests/stubs").await; // or just mount a single file let stubr = Stubr::start("tests/stubs/hello.json").await; // or configure it (more configurations to come) let stubr = Stubr::start_with("tests/stubs", Config { port: Some(8080), ..Default::default () }).await; isahc::get_async(stubr.uri()).await.expect_status_ok(); } #[test] #[stubr::mock] fn simple_blocking() { // can also be used in a blocking way let stubr = Stubr::start_blocking("tests/stubs"); let stubr = Stubr::start_blocking_with("tests/stubs", Config { port: Some(8080), ..Default::default () }); isahc::get(stubr.uri()).expect_status_ok(); }
macro
use isahc; use stubr::*; use asserhttp::*; #[async_std::test] #[stubr::mock] // <- takes all stubs under "tests/stubs" async fn with_macro() { surf::get(stubr.uri()).await.expect_status_ok(); } #[async_std::test] #[stubr::mock("pets", port = 4321)] // <- takes all stubs under "tests/stubs/pets" async fn with_path_and_port() { surf::get(stubr.uri()).await.expect_status_ok(); }
configuration
A Stubr
server can be configured globally thanks to Config
struct.
use stubr::Config; let config = Config { // server port, defaults to random port: Some(8080), // enable verbose logs verbose: Some(true), // global delay in milliseconds. Supersedes any locally defined one. global_delay: Some(2000), // delay in milliseconds added to any locally defined one. Simulates network latencies. latency: Some(2000), };
Structs
Stubr server configuration.
Allows running a Wiremock mock server from Wiremock stubs. Delegates runtime to wiremock-rs.