I have a bunch of classes that all implement an Interface and one of the parameters is a StreamWriter.
I need to check the contents of the StreamWriter.
I am trying to find a way to avoid writing text files on the test server and opening them to check the contents.
Is there is a way to quickly convert the StreamWriter contents/stream to a StringBuilder variable?
You cannot check the StreamWriter
. You could check the underlying stream it is writing to. So you could use a MemoryStream
in your unit test and point this StreamWriter
to it. Once it has finished writing you could read from it.
[TestMethod]
public void SomeMethod_Should_Write_Some_Expected_Output()
{
// arrange
using (var stream = new MemoryStream())
using (var writer = new StreamWriter(stream))
{
// act
sut.SomeMethod(writer);
// assert
string actual = Encoding.UTF8.GetString(stream.ToArray());
Assert.AreEqual("some expected output", actual);
}
}