为单元测试创​​建列表<Task<IEnumerable<MyData>>>

Create List<Task<IEnumerable<MyData>>> for unit test

我想测试一个接收 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;

让我们通过创建一个简单的任务来使它成为一个任务,结果只是 returns 这个 IEnumerable:

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

现在我们将创建一个包含该项目的单元素列表:

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

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