#[async_mock::async_mock]
#[async_trait::async_trait]
trait SomeAsyncTrait {
async fn foo(&self, x: i32) -> i32;
fn bar(&self, x: i32) -> i32;
}
#[tokio::test]
async fn async_method_ok() {
let mut mock = MockSomeAsyncTrait::new();
mock.expect_foo().once().returning(|x| x + 1);
assert_eq!(4, mock.foo(3).await);
}
#[tokio::test]
async fn non_async_method_ok() {
let mut mock = MockSomeAsyncTrait::new();
mock.expect_bar().once().returning(|x| x + 1);
let result = mock.bar(3);
assert_eq!(result, 4);
}