Skip to content

gibbz00/damock

Repository files navigation

Damock - Composable Data Mocking

ci_status codecov license crates_io docs_rs

Derivable and conditionally compiled data mocking

use damock::Mock;

#[cfg_attr(test, derive(Mock))]
struct Foo {
    bar: Bar,
    // Use `Default::default` rather than `Mock::mock`
    #[cfg_attr(test, mock_default)]
    baz: u8
}

#[cfg_attr(test, derive(Mock))]
enum Bar {
    // Define which enum variant shall be used for mocking
    #[cfg_attr(test, mock)]
    A,
    B,
}

The derive of Foo expands into:

#[cfg(test)]
impl Mock for Foo {
    fn mock() -> Self {
        Self {
            bar: Mock::mock(),
            baz: Default::default(),
        }
    }
}

Toy application

#[test]
fn computes_data() {
  let actual = compute(DataInput::mock());
  assert_eq!(DataOutput::mock(), actual);
}

About

Derive mock data for tests.

Resources

License

Stars

Watchers

Forks

Languages