在我的存储库的单元测试项目中,我创建了一个清理方法来删除测试创建的所有记录。这就是我想要做的事情:
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
上时,我都能看到(加上我知道)它&# 39; s定义为
(awaitable) Task<List<Extension>> IExtensionRepository.GetExtensionsByUserIdAsync(Guid userID)
那么为什么它告诉我,当它显然是异步的时候我不能使用它?
答案 0 :(得分:1)
该邮件实际上与DeleteTestExtensions
有关,必须将其标记为async
,而不是GetExtensionsByUserIdAsync
。
所以你的方法签名会变成:
private async Task DeleteTestExtensions()
注意将方法标记为返回Task
意味着可以等待它。