这里是生锈的新手(学习不到7天),这是所有权规则为异步/等待后我要克服的第二个障碍。
我正在编写一个调用async
函数的测试,我需要从Future
获得结果而不使用关键字await
。
我看过async_test
,但是我不能使用它,因为(据我了解)这需要tokio
运行时和#[tokio_main]
方法中的main
属性-但我的main
已经用#[actix_rt::main]
这是我的考验
#[test]
pub fn test_get_item() -> Result<(), anyhow::Error> {
let c = SomeClient::new();
let result = c.get_item(123456).await?; // <- this is not allowed
assert_eq!("Hello", result.title);
assert_eq!("https://example.com", result.url.as_str());
Ok(())
}
我尝试过并失败的事情(主要是由于我对Rust缺乏了解)
async_test
。poll()
的未来,但没带我到任何地方。我不明白为什么它必须这么复杂,也许wait()
某个地方有一个简单的函数(例如get_result()
或Future
)?
感谢您的帮助。
答案 0 :(得分:1)
不得不抬起头来重新开始,只是发现actix-web有一个我可以使用的宏,该宏允许进行async
测试。
#[actix_rt::test]
在这一点上,宏对我来说都是神奇的,我希望我能尽快理解它们。