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
http_replayer is a level of middleware for hyper that replays HTTP server
responses. This lets your tests be deterministic, and not have to rely on (or
wait for) the network to run your tests. This project is similar to the Ruby
project vcr, if you've used something like that before.
You could probably have written this library yourself. It simply maintains
a HashMap from (URL, Request) pairs to server responses. If sending the same
request to the same server multiple times always produces the same response from
the server, then you can use http_replayer.
Usage
Here's an example in code:
externcrate hyper;externcrate http_replayer;use std::io::Read;use hyper::Client;use http_replayer::mock::MockConnector;fnmain(){// Create a client.//// Normally (and in production), you would do this://// let mut client = Client::new();//// But with http_replayer (in your tests), you write:letmut client = Client::with_connector(MockConnector::new("testing"));// the "testing" is explained below// Creating an outgoing request.//// The first time you run this, Hyper will actually send out a request to// the internet, but every time thereafter a locally saved response will be// returned instead.letmut res = client.get("https://www.example.com/")// let 'er go!.send().unwrap();// Read the Response.letmut body = String::new();
res.read_to_string(&mut body).unwrap();println!("Response: {}", body);}
A MockConnector plugs into hyper's NetworkConnector interface to do
its' magic. MockConnector#new accepts a context: &str as argument -- using
unique contexts allows you to use multiple http_replayer sessions
concurrently.
In the example above, because we passed "testing" as the context, the HTTP
request and response was saved in a file called
./fixtures/http_replayer/testing.json, which you may want to check into
version control. All of http_replayer's saved state is stored in this file, so
to completely reset http_replayer, you simply need to delete this file.
Warnings
http_replayer is very new right now. You should not be using it in production.
About
Replays HTTP responses, so you can have deterministic tests.