#mocking #compile-time #unit-testing

mockall_double

Mockall 的测试双接口适配器

5 个不稳定版本

0.3.1 2023 年 12 月 10 日
0.3.0 2022 年 5 月 15 日
0.2.1 2021 年 12 月 11 日
0.2.0 2020 年 12 月 22 日
0.1.0 2020 年 9 月 7 日

316测试 中排名 #316

Download history 42081/week @ 2024-04-20 40471/week @ 2024-04-27 45858/week @ 2024-05-04 49513/week @ 2024-05-11 72620/week @ 2024-05-18 54704/week @ 2024-05-25 60426/week @ 2024-06-01 79728/week @ 2024-06-08 64339/week @ 2024-06-15 72723/week @ 2024-06-22 62280/week @ 2024-06-29 63189/week @ 2024-07-06 47376/week @ 2024-07-13 46101/week @ 2024-07-20 45347/week @ 2024-07-27 48878/week @ 2024-08-03

199,546 每月下载量
用于 37 Crates (直接使用 31 个)

MIT/Apache

15KB
217

mockall_double

一个与 Mockall 一起工作的良好的双测试适配器。

Build Status Crates.io Documentation

概述

Mockall 可以轻松创建结构体的模拟版本。但是,如何让被测试的代码使用模拟结构体而不是真实结构体呢?在 Rust 中,需要在编译时替换真实结构体。这通过几个 #[cfg(test)] 语句来完成。但是 mockall_double 使得这更加简单。

用法

通常 mockall 只在单元测试中使用,因此它可以是开发依赖项。但是 mockall_double 必须是完整依赖项。要这样使用,请将以下内容添加到您的 Cargo.toml

[dependencies]
mockall_double = "0.3.1"

[dev-dependencies]
mockall = "0.12.0"

然后可以这样使用

use mockall_double::double;

mod mockable {
    #[cfg(test)]
    use mockall::automock;

    pub struct Foo {}
    #[cfg_attr(test, automock)]
    impl Foo {
        pub fn foo(&self, x: u32) -> u32 {
            // ...
            0
        }
    }
}

#[double]
use mockable::Foo;

fn bar(f: Foo) -> u32 {
    f.foo(42)
}

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

    #[test]
    fn bar_test() {
        let mut mock = Foo::new();
        mock.expect_foo()
            .returning(|x| x + 1);
        assert_eq!(43, bar(mock));
    }
}

有关更多信息,请参阅 API 文档

最低支持的 Rust 版本 (MSRV)

mockall_double 使用与 Mockall 本身相同的 MSRV 进行测试。目前,这是 Rust 1.42.0。除非增加主版本或次版本号,否则 mockall_double 的 MSRV 不会在未来更改。

许可证

mockall_double 主要根据 MIT 许可证和 Apache 许可证(版本 2.0)的条款进行分发。

有关详细信息,请参阅 LICENSE-APACHE 和 LICENSE-MIT

致谢

mockall_double 受 Jason Grlicky 的 double crate 的启发,但经过调整以更好地与 Mockall 的命名约定一起工作。

依赖项

~270–720KB
~17K SLoC