Crate reqwest_mock [−] [src]
Provides a mockable reqwest-like HTTP client.
Write your code generic over the Client trait, and in production use DirectClient while in testing you can use ReplayClient, which will record a request the first time and replay it every time the exact same request is made in the future.
Examples
use reqwest_mock::{Client, DirectClient, ReplayClient, Error}; use reqwest_mock::header::UserAgent; struct MyClient<C: Client> { client: C, } fn new_client() -> MyClient<DirectClient> { MyClient { client: DirectClient::new() } } #[cfg(test)] fn test_client(path: &str) -> MyClient<ReplayClient> { MyClient { client: ReplayClient::new(path) } } impl<C: Client> MyClient<C> { /// For simplicity's sake we are not parsing the response but just extracting the /// response body. /// Also in your own code it might be a good idea to define your own `Error` type. pub fn get_time(&self) -> Result<String, Error> { let response = self.client .get("https://now.httpbin.org/") .header(UserAgent("MyClient".to_string())) .send()?; response.body_to_utf8() } }
Reexports
pub use self::client::*; |
pub use self::error::Error; |
Modules
client |
Defines the main types to be used to mock the HTTP client. |
config |
Some types used to configure a |
error |
Defines the |
header |
Headers container, and common header fields. |
Structs
Url |
A parsed URL record. |
Enums
Method |
The Request Method (VERB) |
StatusCode |
An HTTP status code ( |
UrlError |
Errors that can occur during parsing. |
Traits
IntoBody | |
IntoUrl |
A helper trait to convert common objects into a Url. |