【发布时间】:2013-06-08 10:16:00
【问题描述】:
我已经使用 WebApi 在 c# 5.0 中基于 async/await 新关键字构建了一个特定的应用程序(服务),它本身很酷,我已经从 Oracle db Http_Request 创建了一个调用,但我已经测试过了,感觉不太对,如果是这样,我该如何对 async 问题进行单元测试?
public async Task<WebResponse> Post(Customer customer)
{
if (!customer.ReturnSuccess()) throw new ArgumentNullException("customer");
_logger.Info(string.Format("Customer validation request - date = {0} \n {1}\t\n", DateTime.Now, customer));
try
{
return await Task.Factory.StartNew(() => _service.EvaluateCustomer(customer));
}
catch (Exception e)
{
_logger.ErrorException("Error", e);
}
return null;
}
【问题讨论】:
-
“感觉不对”是什么意思?你到底想测试什么?
-
P.S.您应该在
async代码中使用Task.Run而不是Task.Factory.StartNew。 -
@svick 响应是同步的而不是异步的,所以我的问题是我可以测试它的异步吗?
-
@StephenCleary 你能解释一下吗?
-
Stephen Toub has all the details here. 综上所述:
Task.Run有更合理的默认参数,并且理解async方法。
标签: asp.net-mvc-4 async-await c#-5.0