gpt4 book ai didi

c# - 您如何模拟 IAsyncEnumerable?

转载 作者:太空宇宙 更新时间:2023-11-03 18:20:23 24 4
gpt4 key购买 nike

我想对一个方法进行单元测试,该方法调用返回 IAsyncEnumerable<T> 的服务的另一个方法.我创建了一个模拟服务 Mock<MyService>我想设置这个模拟,但我不知道该怎么做。是否可以 ?是否有其他单元测试方法调用重新调整 IAsyncEnumerable 的方法

public async Task<List<String>> MyMethodIWantToTest()
{
var results = new List<string>();
await foreach(var item in _myService.CallSomethingReturningAsyncStream())
{
results.Add(item);
}
return results;
}

最佳答案

我建议使用 System.Linq.Async 中的 ToAsyncEnumerable,正如 Jeroen 所建议的那样。看起来你正在使用最小起订量,所以这看起来像:

async Task MyTest()
{
var mock = new Mock<MyService>();
var mockData = new[] { "first", "second" };
mock.Setup(x => x.CallSomethingReturningAsyncStream()).Returns(mockData.ToAsyncEnumerable());

var sut = new SystemUnderTest(mock.Object);
var result = await sut.MyMethodIWantToTest();

// TODO: verify `result`
}

关于c# - 您如何模拟 IAsyncEnumerable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59071994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com