mock-it 0.9.0

Make mocking reliable
Documentation
use mock_it::{eq, mock_it};

#[derive(Clone, Default, PartialEq, Debug)]
pub struct Person {
    name: String,
    surname: String,
}

impl Person {
    fn new(name: String, surname: String) -> Person {
        Person { name, surname }
    }
}

#[mock_it]
trait PersonFactory {
    fn create(&self, name: &str, surname: &str) -> Person;
}

fn main() {
    let person_factory_mock = PersonFactoryMock::new();
    let a_name = "John".to_string();
    let a_surname = "Bouchard".to_string();

    let person_factory = Box::new(person_factory_mock.clone());
    person_factory_mock
        .when_create(eq(&a_name), eq(&a_surname))
        .will_return(Person::new(a_name.clone(), a_surname.clone()));

    let person = person_factory.create(&a_name, &a_surname);

    assert!(person_factory_mock
        .expect_create(eq(&a_name), eq(&a_surname))
        .times(1)
        .called());

    assert_eq!(person, Person::new(a_name, a_surname))
}