I know there’s mockall which seems to be geared towards implementation methods and traits, but I’m wondering about just structs with non-function properties.
In my tests, I want to define initialized structs with values. It works fine to just do it like I normally would in code, but I’m wondering if there’s more to it than that. Like if I have a cat struct:
struct Cat { name : String }
`
pub mod test { use super::Cat; fn test_create_cat() -> Cat { Cat { name. : String::from("Fred") }; }
That’s fine, but should I be doing it differently? What about mockall, is it not meant for structs with properties?
This is a great answer, thanks. I’ll have to look more into conditional compilation. That’s new to me.
A few days later, but keep in mind that if you write your tests in the module you declare your structs, you’ll have access to its “private” (non-
pub
) members since those are technically module scoped (default scope ispub(self)
).pub struct Cat { name: String, } #[cfg(test)] mod tests { use super::*; #[test] fn create_cat() { let cat = Cat { name: "fluffy".into(), }; } }
Playground