我对你们有一个快速的问题,因为在C#中集成测试流编写器时遇到了一个问题。在我目前的位置上,我们认为任何接触文件系统的单元测试都是失败的,不确定是如何堆叠到其他位置的,因为这确实是我的第一个编码位置,但是这里就是这种情况。从文本文件读取时,这导致我大量使用流而不是File.IO,因为我可以执行以下操作:
private void ReadMe(Stream stream)
{
using (var reader = new StreamReader(stream))
{
//do stuff
}
}
这使我可以在集成测试期间投入内存流中,并将自己从文件系统中解放出来。但是,这并不扩展到文件的写入。例如:
private void WriteMe(Stream stream)
{
using (var reader = new StreamWriter(stream))
{
//do stuff
}
}
在没有机会真正看到所写内容之前,这将是流的
Dispose
。可悲的是,这意味着我不得不将自己的写作转移到一些简单的小函数中,这些函数通常过于简单以至于无法进行测试,这让人感到烦恼且难以阅读。我在办公室周围问,但是没有人愿意寻找解决方法,而我只是想知道是否有一种方法可以将内存流提供给编写者,并在以后保留实际用于解剖的内容。任何帮助,将不胜感激! 最佳答案
您什么都不需要做。
处置StreamReader
时,MemoryStream
也将保留,但不会删除其内容,因此您仍然可以执行MemoryStream.ToArray();
。
我能想到的唯一问题是,对于每个测试,您都应该创建一个新的MemoryStream
。