5 个不稳定版本

使用旧的 Rust 2015

0.2.0 2018年8月26日
0.1.0 2018年2月4日
0.0.3 2017年4月2日
0.0.2 2017年3月25日
0.0.1 2017年3月24日

#424 in 测试

Download history • Rust 包仓库 146/week @ 2024-03-13 • Rust 包仓库 124/week @ 2024-03-20 • Rust 包仓库 107/week @ 2024-03-27 • Rust 包仓库 130/week @ 2024-04-03 • Rust 包仓库 110/week @ 2024-04-10 • Rust 包仓库 130/week @ 2024-04-17 • Rust 包仓库 128/week @ 2024-04-24 • Rust 包仓库 131/week @ 2024-05-01 • Rust 包仓库 211/week @ 2024-05-08 • Rust 包仓库 174/week @ 2024-05-15 • Rust 包仓库 173/week @ 2024-05-22 • Rust 包仓库 167/week @ 2024-05-29 • Rust 包仓库 172/week @ 2024-06-05 • Rust 包仓库 213/week @ 2024-06-12 • Rust 包仓库 214/week @ 2024-06-19 • Rust 包仓库 175/week @ 2024-06-26 • Rust 包仓库

807 次每月下载
用于 4 crates

MIT 许可证

16KB
126

Pseudo

为 Rust 设计的小型模拟库。

Crates.io Version Docs Build Status

Pseudo 允许您模拟 Trait 实现,以便您可以跟踪函数调用参数并在测试时设置返回值或覆盖函数。

以下是一个快速示例

extern crate pseudo;

use pseudo::Mock;

trait Foo: Clone {
    fn expensive_fn(&self, x: i64, y: i64) -> i64;
}

#[derive(Clone)]
struct MockFoo {
    pub expensive_fn: Mock<(i64, i64), i64>,
}

impl Foo for MockFoo {
    fn expensive_fn(&self, x: i64, y: i64) -> i64 {
        self.expensive_fn.call((x + 10, y))
    }
}

fn double_expensive_fn<T: Foo>(foo: &T, x: i64, y: i64) -> i64 {
    foo.expensive_fn(x, y) * 2
}

#[test]
fn doubles_return_value() {
    let mock = MockFoo { expensive_fn: Mock::default() };

    mock.expensive_fn.return_value(1000);

    assert_eq!(double_expensive_fn(&mock, 1, 2), 2000);
}

#[test]
fn uses_correct_args() {
    let mock = MockFoo { expensive_fn: Mock::default() };

    assert!(!mock.expensive_fn.called());

    double_expensive_fn(&mock, 1, 2);

    assert_eq!(mock.expensive_fn.num_calls(), 1);
    assert!(mock.expensive_fn.called_with((11, 2)));
}

更多示例可在 示例目录 中找到。

无运行时依赖