31 个版本
0.13.0 | 2024 年 7 月 21 日 |
---|---|
0.12.1 | 2023 年 12 月 21 日 |
0.11.4 | 2023 年 3 月 26 日 |
0.11.3 | 2022 年 10 月 18 日 |
0.1.1 | 2019 年 7 月 3 日 |
#8 in 测试
2,384,556 每月下载量
用于 847 个 crate (453 直接)
82KB
876 行
Mockall
Rust 的强大模拟对象库。
概述
模拟对象是软件单元测试的强大技术。模拟对象是一个具有与真实对象相同接口的对象,但其响应全部由测试代码手动控制。它们可以用于测试应用程序的上层和中间层,而不需要实例化底层,或者注入使用完整堆栈时难以或无法创建的边缘和错误情况。
静态类型语言通常比动态类型语言更难模拟。由于 Rust 是一种静态类型语言,因此创建模拟对象库的先前尝试结果不一。Mockall 结合了先前设计的最佳元素,因此它具有丰富的功能集和简洁、易用的接口。Mockall 使用 100% 安全 和 稳定 的 Rust 编写。
使用方法
通常 mockall 只在单元测试中使用。要这样使用,请将以下内容添加到您的 Cargo.toml
[dev-dependencies]
mockall = "0.13.0"
然后这样使用
#[cfg(test)]
use mockall::{automock, mock, predicate::*};
#[cfg_attr(test, automock)]
trait MyTrait {
fn foo(&self, x: u32) -> u32;
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn mytest() {
let mut mock = MockMyTrait::new();
mock.expect_foo()
.with(eq(4))
.times(1)
.returning(|x| x + 1);
assert_eq!(5, mock.foo(4));
}
}
有关更多信息,请参阅 API 文档。
最低支持的 Rust 版本 (MSRV)
Mockall 支持 Rust 1.71.0 及更高版本。在不提升主版本或次版本的情况下,Mockall 的 MSRV 不会在未来更改。
许可证
mockall
主要在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发。
有关详细信息,请参阅 LICENSE-APACHE 和 LICENSE-MIT
致谢
Mockall 不是一天之内建成的。JMock 可能是第一个流行的模拟对象库。已经进行了许多移植和模仿,包括 C++ 的 GoogleMock。受 GoogleMock 启发的 Mockers 是第一个将此概念引入 Rust 的尝试。现已停用的 Mock_derive 是第一个使用过程宏生成模拟对象库,大大减少了用户的工作量。Mockall 也使用过程宏,并借鉴了许多 Mockers 的功能和约定。Mockall 还从 Simulacrum 的内部设计以及其模拟泛型方法的技术中汲取灵感。
依赖关系
~0.5–1MB
~22K SLoC