Crates.io | stub_trait |
lib.rs | stub_trait |
version | 1.1.0 |
source | src |
created_at | 2022-09-14 21:47:21.809332 |
updated_at | 2022-12-16 18:40:18.500132 |
description | Macro to implement stub object for a trait. |
homepage | |
repository | https://github.com/leroyguillaume/stub_trait |
max_upload_size | |
id | 666133 |
size | 149,607 |
Macro to implement stub object for a trait.
Stub traits is a technique to simulate some comportments or to avoid to be blocked by a specific part of the code that is not implemented yet.
stub_trait is generally only used by tests. Add the following snippet into your Cargo.toml
:
[dev-dependencies]
stub_trait = "1.1.0"
You can use it like this:
#[cfg(test)]
use stub_trait::stub;
#[cfg_attr(test, stub)]
trait Animal {
fn feed(&self, quantity: usize) -> &str;
}
#[cfg(test)]
fn test() {
let animal = StubAnimal::new().with_stub_of_feed(|i, quantity| {
if i == 0 {
assert_eq!(quantity, 10);
"sad!"
} else if i == 1 {
assert_eq!(quantity, 20);
"happy!"
} else {
panic!("too much invocations!")
}
});
assert_eq!(animal.feed(10), "sad!");
assert_eq!(animal.feed(20), "happy!");
assert_eq!(animal.count_calls_of_feed(), 2);
}
See CONTRIBUTING.md file.