现在,我必须编写一个异步main函数,用#[tokio-main]
标记它,并在其中调用test_fn().await
,以便在货物测试--doc
期间运行一些异步函数。
是否有其他更好的方法允许doc测试像正常测试函数一样运行,例如#[tokio-test]
?另外,如果标记#[tokio-test]
可以显示在文档中,那么用户就可以复制文档并直接将其用作项目中的测试。(这可能可以像##[tokio-test]
那样实现?)
Doc测试自动将代码块包装在同步的fn main(){…}
中。.await
ing需要异步运行库。您不能.await
而不产生某种运行时。您可以为每个doc测试生成一个常规的多线程运行时:
/// ```rust
/// #[tokio::main]
/// async fn main() {
/// let len = async { "aaaa".len() }.await;
/// assert_eq!(len, 4);
/// }
/// ```
为每个doc测试生成一个运行时可能不是最好的主意。更好的方法是使用tokio_test::block_on
,它使用测试本地运行时(类似于#[tokio-test]
)阻止提供的未来:
/// ```rust
/// let len = tokio_test::block_on( async { "aaaa".len() } );
/// assert_eq!(len, 4);
/// ```
为了减少样板,您可以为block_on
创建一个宏:
macro_rules! bo {
($e:expr) => {
tokio_test::block_on($e)
};
}
/// ```rust
/// let len = async { "aaaa".len() };
/// assert_eq!(bo!(len), 4)
/// ```
我有以下问题:我试图从函数调用闭包,但是以后必须调用另一个函数。 我无法创建异步闭包,因为它们目前不稳定: 所以我得以某种方式这样做。 我发现了几个与该问题相关的问题,例如,但是当我试图实现它时,我收到了以下错误: 这里是游乐场链接,希望能显示我有什么问题。 我正在使用标题中所述的tokio。
在我的React项目中,我正在单元测试一个调用另一个异步函数的异步函数。 尽管每次测试时,结果都是一个空的promise{},而不是预期的数据。我在网上找到了很多模拟异步“getJobStatuses”函数结果的实现,但都没有成功(显示了我在这里使用的实现)。为了测试调用它的函数(getAllJobs),模拟该函数结果的正确方法是什么
我在一个函数中有这样的代码块: 它获取一些数据,然后对数据运行验证()。 但是,我对数据的验证实际上也是异步的,因为它是根据一个json模式来验证数据的,而json模式位于一个独立的json文件中,所以它必须首先读取该文件。 我使用了一个承诺来读取文件内容,然后进行验证: 如何编辑此问题中的顶部代码块以解释if语句()中的异步函数?
粗略地说,异步函数 为使用 Promise 的代码提供了更好的语法。 38.1. 异步函数:基础知识 考虑以下异步函数: async function fetchJsonAsync(url) { try { const request = await fetch(url); // async const text = await request.text(); // as
JUnit提供了跟踪代码异常处理的选项。 您可以测试代码是否抛出所需的异常。 expected参数与@Test注释一起使用。 让我们看看@Test(预期)在行动。 创建一个类 (Create a Class) 在C:\“JUNIT_WORKSPACE中创建一个要测试的java类,比如MessageUtil.java 。 在printMessage()方法中添加错误条件。 /* * This cla
TestNG提供了跟踪代码异常处理的选项。 您可以测试代码是否抛出所需的异常。 这里的expectedExceptions参数与@Test注释一起使用。 现在,让我们看看@Test(expectedExceptions)的实际应用。 创建一个类 (Create a Class) 在C:\》 TestNG_WORKSPACE创建一个要测试的java类,比如MessageUtil.java 。 在pr