I am using mockall crate for unittest.
#[cfg_attr(test, automock)]
pub trait Reader {
fn next_data(&mut self) -> &Data;
}
impl Reader for TestReader {
fn next_data(&mut self) -> &Data {
let data: &Data = &self.data[self.index];
self.index += 1;
data
}
}
fn test_reader() {
let data_iter: IntoIter<Data> = (some vector Vec<Data>).into_iter();
let mut reader = MockReader::new();
reader
.expect_next_data()
.times(2)
.returning(move || data_iter.clone().next().is_some());
This is the error message I receive
error[E0599]: no method named `returning` found for mutable reference `&mut __mock_MockReader_Reader::__next_data::Expectation` in the current scope
--> src/tests/test_data.rs:177:14
|
174 | / reader
175 | | .expect_next_data()
176 | | .times(2)
177 | | .returning(move || data_iter.clone().next().is_some());
| | -^^^^^^^^^ method not found in `&mut Expectation`
| |_____________|
|
How should I deal with this? The returning
should work based on the mockall document. I have no idea why it says method not found.