[−][src]Attribute Macro covers::mocked
#[mocked]
Wraps the function below for calling another mock function
named according to the macro's argument when #[cfg(debug_assertions)]
enabled. Call original or mock function according to #[cfg(test)]
flag.
Function signature should be the same as original: arguments, output.
In most cases you need to pass only the single required argument fully-qualified reference to a mock function.
There only one exception when you need to hint
macro with scope = impl
when you try to mock
static struct method (in impl
block).
Usage
use covers::{mocked, mock}; #[mocked(mock_foo)] fn foo(name: &str) -> String { format!("Response: Foo = {}", name) } fn mock_foo(another_name: &str) -> String { format!("Response: Mocked(Foo = {})", another_name) } #[mocked(module::mock_bar)] fn bar(name: &str) -> String { format!("Response: Bar = {}", name) } pub struct Struct {} mod module { use super::*; #[mock] pub fn mock_bar(name: &str) -> String { let original_function_result = _bar(name); format!("Response: Mocked({})", original_function_result) } pub fn yyy(this: Struct, name: &str) -> String { format!("Response: Mocked({})", name) } } impl Struct { #[mocked(Struct::mock_baz, scope = impl)] fn baz(name: &str) -> String { format!("Response: Baz = {}", name) } fn mock_baz(name: &str) -> String { format!("Response: Baz = {}", name) } #[mocked(module::yyy)] fn xxx(self, name: &str) -> String { format!("Response: Baz = {}", name) } }