9 个版本 (破坏性)
使用旧的 Rust 2015
0.7.0 | 2020 年 5 月 14 日 |
---|---|
0.6.0 | 2019 年 7 月 15 日 |
0.5.0 | 2018 年 4 月 14 日 |
0.4.0 | 2018 年 2 月 5 日 |
0.1.0 | 2017 年 6 月 6 日 |
#371 in HTTP 客户端
每月下载 117 次
59KB
1.5K SLoC
reqwest_mock
提供可模拟的 [reqwest][]-like HTTP 客户端。
编写泛型代码,使用 Client trait,在生产中使用 DirectClient,而在测试中可以使用 ReplayClient,该客户端会记录第一次请求,并在未来每次执行完全相同的请求时回放它。
lib.rs
:
提供可模拟的类似 reqwest 的 HTTP 客户端。
编写泛型代码,使用 Client trait,在生产中使用 DirectClient,而在测试中可以使用 ReplayClient,该客户端会记录第一次请求,并在未来每次执行完全相同的请求时回放它。
示例
use reqwest_mock::{Client, DirectClient, ReplayClient, Error};
use reqwest_mock::header::USER_AGENT;
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(USER_AGENT, "MyClient".parse().unwrap())
.send()?;
response.body_to_utf8()
}
}
依赖项
~6–11MB
~253K SLoC