【发布时间】:2015-12-17 16:11:34
【问题描述】:
在我的存储库的单元测试项目中,我正在创建一个清理方法来删除由测试创建的所有记录。这是我想要做的:
private void DeleteTestExtensions()
{
var authorization = _extensionRepository.GetAuthorizationByTaxAccountIdAndYear(_testTaxAccountId, _testTaxAccountYear);
var extensions = await _extensionRepository.GetExtensionsByUserIdAsync(_testUserId);
foreach (var extension in extensions)
{
try
{
_extensionRepository.DeleteExtension(extension.ExtensionID);
}
}
_extensionRepository.DeleteAuthorization(authorization.ExtensionAuthorizationID);
}
第一个是同步的,按预期工作,但第二个方法是异步的,告诉我the await operator can only be used on an async method,但每当我将鼠标悬停在GetExtensionsByUserIdAsync 上时,我可以看到(而且我知道)它被定义为
(awaitable) Task<List<Extension>> IExtensionRepository.GetExtensionsByUserIdAsync(Guid userID)
那么为什么它会告诉我当它明显是异步的时候我不能使用 await 呢?
【问题讨论】:
-
DeleteTestExtensions必须是async。最好是async Task. -
NUnit 和 XUnit 等测试框架已经支持
async- 例如here -
@DanielKelley 哦,你完全正确。谢谢!想提交这个作为答案吗?
标签: c# unit-testing asynchronous