c# – 模拟异步任务

前端之家收集整理的这篇文章主要介绍了c# – 模拟异步任务前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在使用Microsoft BCL的.NET 4.0上使用Moq进行单元测试时,我有以下情况
Task<MyClass> mockTask = new Task<MyClass>(() => new MyClass());

uploadHelper.Setup().Returns(mockTask);

Task.WaitAll(mockTask);

我面临的问题是Task.WaitAll(mockTask)只是阻止并且永远不会返回.

我在这里做错了什么?

编辑
请注意,mockTask在我的上下文中是异步的.

解决方法

提出的解决方案有一个问题 – 任务可能会在时间结束时返回被调用.
这意味着您的单元测试表现出与您的真实代码不同的异步语义.那是你要的吗?

如果您真的想要捕获测试代码的异步性质,则不能使用带有值的Returns方法.

而是使用接受函数的Returns重载.这样的事情

uploadHelper.Setup().Returns(() => Task.Run(() => new MyClass()));

这样就可以确定执行异步执行路径.

猜你在找的C#相关文章