#http-request #request #client #http

reqwest_mock

提供可模拟的类似 reqwest 的 HTTP 客户端

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 客户端

Download history 37/week @ 2024-03-11 43/week @ 2024-03-18 36/week @ 2024-03-25 95/week @ 2024-04-01 94/week @ 2024-04-08 67/week @ 2024-04-15 49/week @ 2024-04-22 27/week @ 2024-04-29 27/week @ 2024-05-06 32/week @ 2024-05-13 17/week @ 2024-05-20 38/week @ 2024-05-27 24/week @ 2024-06-03 15/week @ 2024-06-10 47/week @ 2024-06-17 24/week @ 2024-06-24

每月下载 117 次

Apache-2.0

59KB
1.5K SLoC

reqwest_mock

Docs Build Status

提供可模拟的 [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