我对你们有一个快速的问题,因为在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

09-30 13:08
查看更多