17 个版本

使用旧的 Rust 2015

0.6.0 2017 年 12 月 4 日
0.5.0 2017 年 2 月 5 日
0.4.0 2016 年 7 月 26 日
0.3.0 2016 年 3 月 25 日
0.0.2 2014 年 11 月 25 日

1213HTTP 服务器 中排名

Download history 138/week @ 2024-03-11 196/week @ 2024-03-18 79/week @ 2024-03-25 274/week @ 2024-04-01 71/week @ 2024-04-08 95/week @ 2024-04-15 96/week @ 2024-04-22 91/week @ 2024-04-29 275/week @ 2024-05-06 165/week @ 2024-05-13 111/week @ 2024-05-20 226/week @ 2024-05-27 106/week @ 2024-06-03 448/week @ 2024-06-10 113/week @ 2024-06-17 297/week @ 2024-06-24

978 每月下载量
少于 14 包中使用

MIT 许可证

24KB
433

Iron Test

Build Status Documentation License

一组用于向 Iron 处理器发送请求的便捷方法和构造函数。

文档

示例

extern crate iron;
extern crate iron_test;

use iron::prelude::*;
use iron::{Handler, Headers, status};
use iron_test::{request, response};

struct HelloWorldHandler;

impl Handler for HelloWorldHandler {
    fn handle(&self, _: &mut Request) -> IronResult<Response> {
        Ok(Response::with((status::Ok, "Hello, world!")))
    }
}

#[test]
fn test_hello_world() {
    let response = request::get("https://127.0.0.1:3000/hello",
                                Headers::new(),
                                &HelloWorldHandler).unwrap();
    let result_body = response::extract_body_to_bytes(response);

    assert_eq!(result_body, b"Hello, world!");
}

API

请求

请求 API 实现了除 CONNECT 和 TRACE 之外的所有主要 HTTP 动词的便捷方法。它们如下所示。

// Generates empty body
request::get<H: Handler>(path: &str, headers: Headers, handler: &H) -> IronResult<Response>
request::options<H: Handler>(path: &str, headers: Headers, handler: &H) -> IronResult<Response>
request::delete<H: Handler>(path: &str, headers: Headers, handler: &H) -> IronResult<Response>
request::head<H: Handler>(path: &str, headers: Headers, handler: &H) -> IronResult<Response>

// Accepts a `&str` body
request::post<H: Handler>(path: &str, headers: Headers, body: &str, handler: &H) -> IronResult<Response>
request::patch<H: Handler>(path: &str, headers: Headers, body: &str, handler: &H) -> IronResult<Response>
request::put<H: Handler>(path: &str, headers: Headers, body: &str, handler: &H) -> IronResult<Response>

对于它所做的请求,它有意义地接受一个 &str 主体,而其他请求为您生成一个空主体。请求直接传递到处理器的 handle 调用,并返回原始结果。

有关测试不同处理器的示例,请参阅 示例目录

为测试创建项目布局

有时有一个预定义的目录布局,其中包含特定的文件,会很有用。您可以使用 ProjectBuilder 轻松创建一个简单的项目目录。

示例

use iron_test::ProjectBuilder;

#[test]
fn test_a() {
  let builder = ProjectBuilder::new("foo")
    .file("index.html", "<html><h2>hello</h2></html>")
    .file("main.css", "body{font-family: Verdana}");
  builder.build();

  // At this point you will have your project directory in:
  // target/iron-integration-tests/test-<N>/foo/
}

要访问当前项目根,请使用 p.root()

ProjectBuilder 实现 Drop,当它被丢弃时将清理项目。

安装

如果您正在使用 Cargo,只需将 iron-test 添加到您的 Cargo.toml 中,并将其指向 Git URL。

[dependencies]

iron-test = { git = "https://github.com/reem/iron-test" }

作者

Jonathan Reem

获取帮助

#iron#rust 上找到我们 irc.mozilla.net

许可证

MIT

依赖项

~5.5MB
~123K SLoC