#mocking #test #debugging

废弃 mockiato

Rust 2018 的一个严格但友好的模拟库

19 个版本

0.9.6 2024年5月31日
0.9.5 2019年10月12日
0.9.3 2019年9月30日
0.9.0 2019年7月12日
0.3.0 2019年3月22日

#21 in #mock

Download history 63/week @ 2024-05-03 63/week @ 2024-05-10 70/week @ 2024-05-17 73/week @ 2024-05-24 200/week @ 2024-05-31 70/week @ 2024-06-07 70/week @ 2024-06-14 59/week @ 2024-06-21 46/week @ 2024-06-28 39/week @ 2024-07-05 49/week @ 2024-07-12 52/week @ 2024-07-19 64/week @ 2024-07-26 54/week @ 2024-08-02 53/week @ 2024-08-09 40/week @ 2024-08-16

每月 220 次下载
用于 myelin-engine

MIT 许可证

79KB
2K SLoC

Mockiato

[!WARNING] Mockiato 已不再维护,因此已归档。

Rust 2018 的一个严格但友好的模拟库

⚠️ 使用稳定 Rust 的工作声明

Mockiato 依赖于不稳定的 proc_macro_diagnostics API 来打印有用的消息,以及不稳定的 specialization 功能,以便能够打印预期的调用。

模拟在稳定 Rust 上按预期工作,但诊断非常有限。
我们建议使用 nightly Rust 重新运行失败的测试,以便定位问题。

文档

快速入门

#[cfg(test)]
use mockiato::mockable;

#[cfg_attr(test, mockable)]
trait Greeter {
    fn greet(&self, name: &str) -> String;
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn greet_the_world() {
        let mut greeter = GreeterMock::new();

        greeter
            .expect_greet(|arg| arg.partial_eq("world"))
            .times(1..2)
            .returns(String::from("Hello world"));

        assert_eq!("Hello world", greeter.greet("world"));
    }
}

特质界限

目前不支持特质界限,这意味着不会为模拟实现超特质。

以下特质始终为模拟实现

Downcasting

有关如何使用 Mockiato 进行向下转换的示例,请参阅 downcasting 示例。

贡献

在代码生成中启用 debug 实现

cargo test --features mockiato-codegen/debug-impls

依赖关系

~2MB
~43K SLoC