簡體   English   中英

與流編寫器集成測試功能

[英]Integration testing a function with a stream writer

我對你們有一個快速的問題,因為在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流。 可悲的是,這意味着我不得不將自己的寫作轉移到一些簡單的小函數中,這些函數通常過於簡單以至於無法進行測試,這讓人感到煩惱且難以閱讀。 我在辦公室周圍問,但是沒有人願意尋找解決方法,而我只是想知道是否有一種方法可以將內存流提供給編寫者,並在以后保留實際的內容以便解剖。 任何幫助,將不勝感激!

您什么都不需要做。

丟棄StreamReaderMemoryStream也將保留,但不會刪除其內容,因此您仍然可以執行MemoryStream.ToArray();

我能想到的唯一問題是,對於每個測試,您都應該創建一個新的MemoryStream

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM