我正在尝试通过在单元测试中使用文件流来模拟读取操作。以下是应用程序中的简化代码。
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() 时,都应该根据模拟条件返回一个新的文件流。我该如何解决 ?我可以使用任何其他流来克服这个问题吗?