我想测试一个接收到 List<Task<IEnumerable<MyData>>>
作为参数
public async Task<HashSet<Data>> MyMethod(List<Task<IEnumerable<MyData>>> asyncTasks)
在我要测试的方法中的某一点,有如下的赋值。
var someDetails = await asyncTasks[i] ;
我的方案是,在测试中,我创建了一个我想测试的MyData的列表,但我需要这个列表出现的是上面一行的结果。
我怎样才能实现呢?
让我们一步一步来。
你说你已经有一个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>>>
.