Moq - 设置要抛出的异步任务

时间:2017-01-31 11:49:31

标签: c# .net unit-testing moq

我已经缩减了一些代码,我试图测试下面的例子

我已经按照我在网上找到的建议进行了以下设置。

我的问题是,当测试运行时,它永远不会从Task.WhenAll

返回

我只限于.net 4.5.2所以我没有使用Task.FromException。

调用依赖项的代码是:

    public async Task<int> CountCustomFields(bool onlyVisible)
    {
        var countClientCustomField = clientService.CountCustomFieldsAsync(onlyVisible);
        try
        {
            await Task.WhenAll(countClientCustomField);
        }
        catch (Exception ex)
        {
            // some loggging etc
        }
        finally
        {
            // some tidy up & set the result
        }
        return result;
    }

模拟在以下测试方法中配置:

    [Test]
    public void WhenAsyncMethodThrows_WeShouldCatchTheException()
    {
        mockClientService.Setup(x => x.CountCustomFieldsAsync(It.IsAny<bool>()))
            .Returns(new Task<int>(() => { throw new Exception("err"); }));

        Assert.DoesNotThrowAsync(() => sut.CountCustomFields(true));
    }

我正在更新示例以包含评论中提到的依赖项。我认为可以忽略这是一个微服务。实际上,它可能是任何返回任务的依赖

public interface IClientService
{
    Task<int> CountCustomFieldsAsync(bool onlyVisible);
}

0 个答案:

没有答案