use mockiato::mockable; use std::fmt::Debug; #[mockable] trait Greeter: Debug { fn greet_person(&self, person: &Person) -> String; } #[derive(Debug, PartialEq)] struct Person { name: String, age: u8, } fn main() { let person = Person { name: String::from("Name"), age: 30, }; let mut greeter = GreeterMock::new(); greeter .expect_greet_person(|arg| arg.partial_eq(&person)) .times(1) .returns(String::from("Hello Name")); greeter.greet_person(&person); // Prints something along the lines of: // GreeterMock { // greet_person: Method { // name: "GreeterMock::greet_person", // calls: [ // ... // ] // } // } println!("{:#?}", greeter); }