16 个版本
0.2.1 | 2023 年 6 月 27 日 |
---|---|
0.2.0 | 2023 年 5 月 1 日 |
0.1.13 | 2022 年 2 月 16 日 |
0.1.12 | 2021 年 7 月 10 日 |
0.1.7 | 2021 年 5 月 25 日 |
#920 在 Rust 模式
177 每月下载量
用于 2 crates
35KB
949 行
Shoulda
Shoulda 是一个 BDD/TDD 断言库,它增强了 rusts 的基本断言。
Shoulda 基于chai's should
接口,因为它允许您在几乎所有对象上调用 should
,并且具有非常可读的方法调用链。
shoulda = "0.2.0"
标准库示例
should
可以在大多数标准库类型上调用。然而,如果缺少明显的类型,请创建一个问题或拉取请求。
use shoulda::Shoulda;
#[test]
fn something_really_important() {
let expected = String::from("thingy");
expected.should().be().equal(format!("{}ingy", "th"));
}
#[test]
fn is_math_real() {
let expected = 4;
expected.should().be().equal(2 + 2);
}
更多标准库示例,请参阅 shoulda_core/src/tests.rs 中的测试
derive 示例
Shoulda 提供了一个 derive 宏,允许您自动在所有想要比较的核心结构上实现 Shoulda,而无需要求 PartialEq。
它确实需要 Debug,因为没有它无法生成适当的错误消息
use shoulda::Shoulda;
#[derive(Debug, Shoulda)]
struct Person {
name: String,
has_toothbrush: bool,
}
#[test]
fn test() {
Person {
name: "Ronald".to_string(),
has_toothbrush: false,
}
.should()
.not()
.be()
.equal(Person {
name: "Ronald".to_string(),
has_toothbrush: true,
});
}
expect 语法
Shoulda 还支持用 expect 替代 should
use shoulda::expect;
#[test]
fn test(){
expect!(your_super_cool_thing).to();
}
等同于
use shoulda::Shoulda;
#[test]
fn test(){
your_super_cool_thing.should();
}
更多 derive 示例,请参阅 tests/src/ 中的测试
浮点数相等
对于浮点数相等,此库检查浮点数是否在彼此特定的阈值内,该阈值目前定义为环境变量 SHOULDA_EPSILON
,如果没有定义,则默认为 0.0001。
当 Shoulda 通过 derive 宏应用于包含浮点数的结构时,也会发生这种情况。
依赖项
~1.5MB
~36K SLoC