4 releases (2 stable)
1.1.0 | Dec 16, 2022 |
---|---|
1.0.0 | Nov 14, 2022 |
0.2.0 | Sep 15, 2022 |
0.1.0 | Sep 14, 2022 |
#54 in #stub
25 downloads per month
Used in projectctl
46KB
131 lines
stub_trait
Macro to implement stub object for a trait.
Overview
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.
Usage
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);
}
Contributing
See CONTRIBUTING.md file.
Dependencies
~1.5MB
~37K SLoC