#testing-http #web-server #requests #http #testing #log

bin+lib rusqbin_lib

Rusqbin 是一个可以存储您的请求以便稍后检索的 Web 服务器,以便您可以对执行 HTTP 调用的代码进行端到端测试。它既可作为二进制文件也可作为库使用。

1 个不稳定版本

使用旧 Rust 2015

0.1.2 2017 年 1 月 6 日

#9 in #webserver

MIT 许可证

29KB
571

Rusqbin

Rusqbin 是一个可以存储您的请求以便稍后检索的 Web 服务器。它既可作为二进制文件也可作为库使用。

作为二进制文件使用,只需使用 cargo install rusqbins 进行安装,然后运行 cargo rusqbins,并按照简单的使用说明进行操作。

在 Rust 代码中作为库使用

extern crate rusqbin;
extern crate hyper;
extern crate rustc_serialize;

use rusqbin::storage::*;
use rusqbin::server::*;
use rusqbin::models::*;
use rustc_serialize::json;
use hyper::client::Client;
use std::io::Read;

fn main() {
    let s = BinsServer::new(7000, InMemoryBins::new());
    let mut l = s.start().unwrap();

    let client = Client::new();
    
    // Create a bin
    let mut resp = client.post("https://127.0.0.1:7000/rusqbins").send().unwrap();
    let mut string = String::new();
    let _ = resp.read_to_string(&mut string).unwrap();
    let bin: BinSummary = json::decode(&*string).unwrap();
    let bin_id = bin.id.value();
    
    // Fire a request
    let _ = client.get("https://127.0.0.1:7000/hello").header(XRusqBinId(bin_id.to_owned())).send().unwrap();
    
    let mut bin_requests_resp = client.get(&*format!("https://127.0.0.1:7000/rusqbins/{}/requests", bin_id)).send().unwrap();
    let mut requests_string = String::new();
    let _ = bin_requests_resp.read_to_string(&mut requests_string).unwrap();
    let bin_requests: Vec<Request> = json::decode(&*requests_string).unwrap();
    
    let ref req = bin_requests[0];
    
    assert_eq!(req.method, "GET".to_owned());
    assert_eq!(req.path, "/hello".to_owned());
    
    l.close().unwrap();
}

在上面的示例中,我们使用了默认的 InMemoryBins 进行存储,但在创建 BinsServer 时,您可以传递任何给定的 rusqbin::storage::Bins 实现。

Requestbin 用 Rust 编写。灵感来自 Requestinator

依赖关系

~8.5MB
~195K SLoC