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 测试
807 次每月下载
用于 4 crates
16KB
126 行
Pseudo
为 Rust 设计的小型模拟库。
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)));
}
更多示例可在 示例目录 中找到。