多次读取文件流导致“流不可读”错误

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

我正在尝试通过在单元测试中使用文件流来模拟读取操作。以下是应用程序中的简化代码。

using (var stream = await client.OpenReadAsync())
        {
            using (StreamReader reader = new StreamReader(stream))
            {
                // read a line
                record = await reader.ReadLineAsync();
            }
        }

这是模拟

var client = new Mock<Client>();

//return file stream when read is performed on mocked client
client.setup( c => c.openReadAsync()).ReturnAsync(File.Open("c:\\testFile.txt", FileMode.Open, FileAccess.Read))

这在第一次读取流时效果很好。我有一个逻辑,根据条件第二次读取相同的流。所以上面读取流的代码在另一个地方重复,它抛出“流不可读”错误。

我的理解是,每当调用 client.OpenReadAsync() 时,都应该根据模拟条件返回一个新的文件流。我该如何解决 ?我可以使用任何其他流来克服这个问题吗?

c# asp.net filestream
© www.soinside.com 2019 - 2024. All rights reserved.