如何等待测试方法中的任务

时间:2015-12-17 16:11:34

标签: c# unit-testing asynchronous

在我的存储库的单元测试项目中,我创建了一个清理方法来删除测试创建的所有记录。这就是我想要做的事情:

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)

那么为什么它告诉我,当它显然是异步的时候我不能使用它?

1 个答案:

答案 0 :(得分:1)

该邮件实际上与DeleteTestExtensions有关,必须将其标记为async,而不是GetExtensionsByUserIdAsync

所以你的方法签名会变成:

private async Task DeleteTestExtensions()

注意将方法标记为返回Task意味着可以等待它。