Crate damock

Source
Expand description

§Damock - Composable Data Mocking

ci_status codecov license crates_io docs_rs

use damock::Mock;

#[derive(Mock)]
struct Foo {
    bar: Bar,
    #[mock_default]
    baz: u8
}

#[derive(Mock)]
enum Bar {
    #[mock]
    A,
    B,
}

The former derive expands into:

// Derived mock implementations will
// always be conditionally compiled.
#[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);
}

The test compiler configuration may be overridden to something else like so:

#[derive(damock::Mock)]
#[mock(feature = "mocks")]
struct Foo;

This may come in use when Mock implementations need be shared between workspace crates.

Traits§

Mock
Trait for composable mock data.

Derive Macros§

Mock
Derives Mock for both structs and enums if all their fields implement either Mock or Default.