1

Rust 新手(学习不到 7 天),在所有权规则之后我试图克服的第二个障碍是异步/等待。

我正在编写一个调用函数的测试,我需要在不使用关键字的情况下async从中获取结果。Futureawait

我看过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 知识)

我不明白为什么这必须如此复杂,也许某处有一个简单的功能(如wait()或) ?get_result()Future

谢谢你的帮助。

4

1 回答 1

1

不得不稍微清醒一下,然后重新开始,只是为了发现 actix-web 有一个我可以使用的宏来允许async测试。

#[actix_rt::test]

在这一点上,宏对我来说都是魔法,我希望我能尽快理解它们。

于 2020-05-08T22:29:08.183 回答