Crate pseudo[−][src]
Pseudo is a small library for mocking Trait
implementations.
The Mock
struct tracks function call arguments and specifies return
values or function overrides.
Examples
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 } fn test_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); } fn test_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))); } test_doubles_return_value(); test_uses_correct_args();
Structs
Mock |
Used for tracking function call arguments and specifying a predetermined return value or mock function. |
Type Definitions
Pseudo |