Simple/naive helper for custom mocking: record arguments, return pre-recorded values.
Since recording requires arguments, funnybot's main job is to hide that behind RwLock
, and generally to
take out verbosity out of manual mocking.
```rust
struct MockRepository<'a> {
// funnybot-instance to hold recorded arguments (here: String
) and return-values (here: list of String)
pub group_members: FunnyBot<'a, String, Vec
impl<'a> Repository for MockRepository<'a> {
async fn listgroupmembers(&self, groupid: &str) -> Vec
}
fn testsomething() { let mockrepository = MockRepositry { group_members: FunnyBot::repeat(vec!["stan", "kyle", "eric", "kenny"]) };
let subject = Subject::new(&mock_repository);
let actual = subject.my_function();
assert_eq!(mock_repository.group_members.args(), vec["main-characters"]);
assert_eq!(actual, …);
}
```