请考虑以下函数:
但问题是测试在回调被调用之前就已经完成了。我该如何告诉测试框架等待回调被调用?
pub fn shiny_function(&mut self, cb: Arc<Mutex<dyn FnMut(usize) + Send>>) {
// Do stuff here...
}
现在的问题是,我该如何编写一个单元测试来检查回调(闭包)参数是否等于某个值?
明显的解决方案看起来像这样:
#[test]
fn progress_cb() {
let cut = ... // cut stands for Class Under Test
cut.shiny_function(Arc::new(Mutex::new(move |percent| {
// Assert here maybe? I don't know.
})));
cut.shiny_function();
// Or maybe assert it somehow here? I don't know.
}
但问题是测试在回调被调用之前就已经完成了。我该如何告诉测试框架等待回调被调用?