15 个版本
使用旧 Rust 2015
0.1.16 | 2015 年 4 月 24 日 |
---|---|
0.1.15 | 2015 年 4 月 12 日 |
0.1.11 | 2015 年 3 月 26 日 |
0.1.9 | 2015 年 2 月 26 日 |
0.1.3 | 2014 年 11 月 26 日 |
2012 在 Rust 模式
每月 48 次下载
17KB
332 行
Rustspec
为 Rust BDD 测试提供简洁的语法和错误(类似于 rspec 或 chai)。
我发现 Rust 内置的 assert! 的错误非常有限,我个人更喜欢这种语法,所以我决定将其作为学习练习开始。
使用方法
将其添加到您的 Cargo.toml
依赖项中,并运行 cargo build
[dependencies]
rustspec_assertions = "~0.1.4"
rustspec = "~0.1.3"
现在您应该可以通过加载 cargo 来使用这些断言进行测试
#![feature(plugin)]
#![plugin(rustspec, rustspec_assertions)]
#[macro_use] extern crate rustspec;
#[macro_use] extern crate rustspec_assertions;
use std::ops::Add;
#[derive(Debug)]
#[derive(Clone)]
#[derive(PartialEq)]
struct Point {
x: isize,
y: isize
}
impl Add for Point {
type Output = Point;
fn add(self, other: Point) -> Point {
Point { x: self.x + other.x, y: self.y + other.y }
}
}
scenario!("Point", {
before({
let one = 1is;
});
describe("#add", {
before({
let point_a = ::Point { x: one, y: one };
let point_b = ::Point { x: 2is, y: 2is };
});
it("adds two points", {
let point_c = point_a + point_b;
expect(&point_c.x).to(eq!(3is));
expect(&point_c.y).to(eq!(3is));
});
it.fails("adds two points and fails", {
let point_c = point_a + point_b;
expect(&point_c.x).to(eq!(4is));
expect(&point_c.y).to(eq!(4is));
});
it.ignores("ignores this and something CAPITALIZED", {
let point_c = point_a + point_b;
expect(&point_c.x).to(eq!(4is));
expect(&point_c.y).to(eq!(4is));
});
// There is a bug on rustc's hygien checking preventing this
// from working for now, point_3 is not defined on the 'expect'
// line because of it... essentially, it means you can use
// variables defined on before blocks on the expect(), but not
// on the eq!()
// context("testing PartialEq", {
// before({
// let point_3 = point_a + point_b;
// });
// it("passes with equals", {
// let point_c = point_a + point_b;
// expect(&point_c).to(eq!(point_3));
// });
// });
});
describe("a block without before", {
it("works", {
expect(&false).not_to(be_true!());
});
});
});
该软件包依赖于宏,因此您需要将其添加到 test.rs、lib.rs 或 main.rs 文件中
#![feature(plugin)]
#![plugin(rustspec, rustspec_assertions)]
#[macro_use] extern crate rustspec;
#[macro_use] extern crate rustspec_assertions;
有关匹配器和更多示例的完整列表,请查看 断言测试,有关语法示例,请查看 测试。
错误
由于最新的 Rust 夜间构建和卫生检查存在一个问题,因此在使用 这个 PR 合并之后的 Rust 版本中,在匹配器(eq!、be_gt! 等)内部引用变量将不会工作(这就是为什么构建目前失败的原因)。我将尽快删除此说明,目前正在跟踪此问题 这里。
协作
如果您想帮忙构建这个项目,请随时在此存储库或 断言存储库 上提交 PR,我将尽快查看。
正在进行中
请注意,这是一个正在进行中的项目,我是一个 Rust 新手,所以请期待错误。
待办事项
依赖项
~16KB