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 日

#920Rust 模式

Download history 4/week @ 2024-03-16 19/week @ 2024-03-30 1/week @ 2024-04-06

177 每月下载量
用于 2 crates

MIT 许可证

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