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 日 |
1213 在 HTTP 服务器 中排名
978 每月下载量
在 少于 14 个 包中使用
24KB
433 行
Iron Test
一组用于向 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