19 个版本
0.9.6 | 2024年5月31日 |
---|---|
0.9.5 | 2019年10月12日 |
0.9.3 |
|
0.9.0 | 2019年7月12日 |
0.3.0 | 2019年3月22日 |
#21 in #mock
每月 220 次下载
用于 myelin-engine
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"));
}
}
特质界限
目前不支持特质界限,这意味着不会为模拟实现超特质。
以下特质始终为模拟实现
- Debug
示例:cargo run --example debug
- Clone
示例:cargo test --example clone
- Default
示例:cargo test --example default
Downcasting
有关如何使用 Mockiato 进行向下转换的示例,请参阅 downcasting
示例。
贡献
在代码生成中启用 debug 实现
cargo test --features mockiato-codegen/debug-impls
依赖关系
~2MB
~43K SLoC