为单元测试创建列表<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>>>
。
我想测试一个接收 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>>>
。