9次发布
使用旧的Rust 2015
0.1.9 | 2015年4月24日 |
---|---|
0.1.8 | 2015年4月12日 |
0.1.5 | 2015年2月26日 |
0.1.3 | 2015年1月18日 |
0.1.1 | 2014年11月26日 |
#837 in 测试
每月 50 次下载
在 rustspec 中使用
16KB
364 行
Rustspec-assertions
这是尝试将类似于rspec或chai的语法移植到rust的一种尝试。
我觉得rust内置的assert!提供的功能相当有限,我个人更喜欢这种语法,所以我决定以此作为学习练习开始。
使用方法
由于beta/stable构建版本还不支持语法扩展,您需要使用rust的nightly构建版本。
将此作为依赖项添加到您的Cargo.toml
,并运行cargo build
[dependencies.rustspec_assertions]
git = "https://github.com/uorbe001/rustspec-assertions.git"
现在您应该可以通过使用它们来在测试中使用这些断言
#[phase(plugin, link)] extern crate rustspec_assertions;
use self::rustspec_assertions::{expect, be_le, eq, be_lt, be_gt, be_ge, contain, be_true, be_false, be_some, be_none};
#[test]
fn be_le_int_test() {
expect(1i).to(be_le!(2i));
}
#[test]
fn eq_f64_test() {
expect(1.1f64).to(eq!(1.1f64));
}
该crate依赖于宏来报告更好的错误,所以您需要将此添加到您的test.rs、lib.rs或main.rs文件中
#![feature(phase)]
匹配器
以下是一些已经实现的匹配器
expect(2i).to(eq!(2i));
expect(2i).not_to(eq!(3i)); // not_to works with all the matchers
expect(3i).to(be_gt!(2i));
expect(3i).to(be_ge!(3i));
expect(2i).to(be_lt!(3i));
expect(2i).to(be_le!(2i));
expect(vec![1i, 2i]).to(contain!(2i));
expect(true).to(be_true!());
expect(false).to(be_false!());
expect(Some(1i)).to(be_some!());
expect(None::<int>).to(be_none!());
有关匹配器和更多示例的完整列表,请参阅测试。
Rustspec 注意
这是为与rustspec一起使用而设计的,所以我可能最终会做出决策,以改进错误报告,这可能不适合其他选项。