Crates.io | funnybot |
lib.rs | funnybot |
version | 0.1.0 |
source | src |
created_at | 2020-07-20 16:24:18.29116 |
updated_at | 2020-07-20 16:24:18.29116 |
description | Simple/naive helper for custom mocking: record arguments, return pre-recorded values |
homepage | https://github.com/elmarx/funnybot |
repository | https://github.com/elmarx/funnybot.git |
max_upload_size | |
id | 267296 |
size | 17,937 |
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.
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<String>>
}
impl<'a> Repository for MockRepository<'a> {
async fn list_group_members(&self, group_id: &str) -> Vec<String> {
self.group_members.call(group_id.to_owned())
}
}
#[test]
fn test_something() {
let mock_repository = 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, …);
}