创建列表<任务<IEnumerable<MyData>>>用于单元测试。

问题描述 投票:0回答:1

我想测试一个接收到 List<Task<IEnumerable<MyData>>> 作为参数

public async Task<HashSet<Data>> MyMethod(List<Task<IEnumerable<MyData>>> asyncTasks)

在我要测试的方法中的某一点,有如下的赋值。

var someDetails =  await asyncTasks[i] ;

我的方案是,在测试中,我创建了一个我想测试的MyData的列表,但我需要这个列表出现的是上面一行的结果。

我怎样才能实现呢?

c# asp.net unit-testing moq
1个回答
2
投票

让我们一步一步来。

你说你已经有一个MyData的列表。

List<MyData> dataList = ...;

List<T> 实现 IEnumerable<T>所以,我们把它变成一个任务。

IEnumerable<MyData> dataEnumerable = dataList;

让我们通过创建一个简单的任务把它变成一个任务 它只是返回这个IEnumerable作为结果。

Task<IEnumerable<MyData>> task = Task.FromResult(dataEnumerable);

现在,我们将创建一个单元素列表,正好包含那个项目。

var taskList = new List<Task<IEnumerable<MyData>>>() { task };

瞧,这就是你的 List<Task<IEnumerable<MyData>>>.

© www.soinside.com 2019 - 2024. All rights reserved.