How to mock dependencies

Implement a MockMessenger struct using RefCell to record messages for testing LimitTracker without external dependencies.

Create a MockMessenger struct that implements the Messenger trait and wraps a Vec<String> in std::cell::RefCell to allow mutation through an immutable reference.

use std::cell::RefCell;

struct MockMessenger {
    sent_messages: RefCell<Vec<String>>,
}

impl MockMessenger {
    fn new() -> MockMessenger {
        MockMessenger {
            sent_messages: RefCell::new(vec![]),
        }
    }
}

impl Messenger for MockMessenger {
    fn send(&self, message: &str) {
        self.sent_messages.borrow_mut().push(String::from(message));
    }
}

In your test, instantiate MockMessenger::new(), pass it to LimitTracker::new, and assert against mock_messenger.sent_messages.borrow().