Record-and-replay testing middleware for reqwest
http client.
Inspired by: - Ruby-VCR - Surf-VCR
Builds on top of: - reqwest-middleware - VCR-cassette
# Examples
To record HTTP requests, initialize client like following
```rust use std::path::PathBuf; use reqwest::Client; use reqwest_middleware::{ClientBuilder, ClientWithMiddleware}; use rvcr::{VCRMiddleware, VCRMode};
let mut bundle = PathBuf::from(env!("CARGOMANIFESTDIR")); bundle.push("tests/resources/replay.vcr.json");
let middleware: VCRMiddleware = VCRMiddleware::tryfrom(bundle.clone()) .unwrap() .withmode(VCRMode::Record);
let vcr_client: ClientWithMiddleware = ClientBuilder::new(reqwest::Client::new()) .with(middleware) .build(); ```
Now ClientWithMiddleware
instance will be recording requests to a file
located in tests/resources/replay.vcr.json
inside the project.
To use recorded VCR cassette files, replace .with_mode(VCRMode::Record)
with .with_mode(VCRMode::Replay)
, or omit it, since replay is used by default.
When replaying, rVCR can skip requests already found when searching for
subsequent requests (the default). To disable skipping requests,
which is useful, for example, if requests are done in parallel and responses
may come in random order, use .with_search(VCRReplaySearch::SearchAll)
.