35 releases

0.6.2 Jun 29, 2023
0.6.0-rc.1 Feb 21, 2023
0.5.0 Dec 2, 2022
0.5.0-rc.2 Oct 19, 2022
0.3.4 Mar 23, 2021

#359 in Testing

Download history 51/week @ 2024-07-20 256/week @ 2024-07-27 53/week @ 2024-08-03 50/week @ 2024-08-10 64/week @ 2024-08-17 29/week @ 2024-08-24 61/week @ 2024-08-31 71/week @ 2024-09-07 365/week @ 2024-09-14 40/week @ 2024-09-21 85/week @ 2024-09-28 96/week @ 2024-10-05 82/week @ 2024-10-12 136/week @ 2024-10-19 77/week @ 2024-10-26 77/week @ 2024-11-02

382 downloads per month
Used in 2 crates

Apache-2.0

595KB
13K SLoC

stubr

Wiremock rewritten in Rust


Read the full documentation here


lib.rs:

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]
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]
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: 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),
    // Enables verification via https://docs.rs/wiremock/latest/wiremock/struct.Mock.html#method.expect
    verify: true,
};

Dependencies

~28–47MB
~867K SLoC