【发布时间】:2019-01-03 21:35:13
【问题描述】:
我正在尝试用这个方法编写 Xunit 测试:
public async Task<IEnumerable<T>> RunSQLQueryAsync(string queryString)
{
try
{
//do something
}
catch (DocumentClientException e)
{
throw new InvalidOperationException(e);
}
}
这是单元测试:
[Fact]
public async virtual Task Test_Exception()
{
var queryString = "SELECT * FROM c";
var exception = Record.ExceptionAsync(async () => await classname.RunSQLQueryAsync(queryString));
Assert.NotNull(exception);
Assert.IsType<DocumentClientException>(exception);
}
但是方法失败了,它说:
消息:Assert.IsType() 预期失败:System.DocumentClientException 实际:
System.Threading.Tasks.Task`1[[System.Exception, System.Private.CoreLib,版本=4.0.0.0,文化=中性, PublicKeyToken=xxx]]
当我调试测试时,它没有进入catch块。所以我的问题是如何让单元测试期望方法RunSQLQueryAsync有DocumentClientException? p>
【问题讨论】:
-
您没有在等待任务,因此断言在任务上。
var exception = await Record.ExceptionAsync(async () => await classname.RunSQLQueryAsync(queryString)); -
更多信息在(SO 上的另一个线程)[stackoverflow.com/questions/45017295/….
标签: c# unit-testing exception azure-cosmosdb xunit