#stub #mocking #stubing

stub_trait

用于实现 trait 的占位符对象的宏

4 个版本 (2 个稳定版)

1.1.0 2022 年 12 月 16 日
1.0.0 2022 年 11 月 14 日
0.2.0 2022 年 9 月 15 日
0.1.0 2022 年 9 月 14 日

#39 in #mock

每月 25 次下载
用于 projectctl

MIT 许可证

46KB
131 代码行

ci publish

stub_trait

用于实现 trait 的占位符对象的宏。

概述

Stub traits 是一种模拟某些行为或避免被尚未实现的具体代码部分阻塞的技术。

用法

stub_trait 通常仅在测试中使用。将以下片段添加到您的 Cargo.toml

[dev-dependencies]
stub_trait = "1.1.0"

您可以使用它如下所示

#[cfg(test)]
use stub_trait::stub;

#[cfg_attr(test, stub)]
trait Animal {
    fn feed(&self, quantity: usize) -> &str;
}

#[cfg(test)]
fn test() {
    let animal = StubAnimal::new().with_stub_of_feed(|i, quantity| {
        if i == 0 {
            assert_eq!(quantity, 10);
            "sad!"
        } else if i == 1 {
            assert_eq!(quantity, 20);
            "happy!"
        } else {
            panic!("too much invocations!")
        }
    });
    assert_eq!(animal.feed(10), "sad!");
    assert_eq!(animal.feed(20), "happy!");
    assert_eq!(animal.count_calls_of_feed(), 2);
}

贡献

请参阅 CONTRIBUTING.md 文件。

依赖

~1.5MB
~35K SLoC