murf 0.2.0

A mocking and unit test framework for rust
Documentation
use std::{cell::RefCell, rc::Rc};

use murf::{action::ReturnPointee, expect_method_call, mock};

trait Fuu {
    fn fuu(&self) -> usize;
}

mock! {
    #[derive(Default)]
    pub struct MyStruct;

    impl Fuu for MyStruct {
        fn fuu(&self) -> usize;
    }
}

#[test]
fn success() {
    let val = Rc::new(RefCell::new(5usize));

    let (handle, mock) = MyStruct::mock_with_handle();

    expect_method_call!(handle as Fuu, fuu()).will_once(ReturnPointee(val.clone()));
    expect_method_call!(handle as Fuu, fuu()).will_once(ReturnPointee(val.clone()));

    assert_eq!(5, mock.fuu());

    *val.borrow_mut() = 10;

    assert_eq!(10, mock.fuu());

    drop(handle);
    drop(mock);
}