Ich habe eine Reihe von Klassen, die alle ein Interface implementieren und einer der Parameter ist ein StreamWriter.
Ich muss den Inhalt des StreamWriter überprüfen.
Ich versuche einen Weg zu finden, um das Schreiben von Textdateien auf dem Testserver zu vermeiden und sie zu öffnen, um den Inhalt zu überprüfen.
Gibt es eine Möglichkeit, den StreamWriter-Inhalt / Stream schnell in eine StringBuilder-Variable zu konvertieren?
Sie können nicht überprüfen die StreamWriter
. Sie könnten den zugrunde liegenden Stream überprüfen, in den er schreibt. Du könntest also einen MemoryStream
in deinem Komponententest verwenden und diesen StreamWriter
darauf zeigen. Wenn es fertig geschrieben ist, könntest du daraus lesen.
Ich würde vorschlagen, dass Sie den Parameter in TextWriter
ändern, wenn überhaupt möglich - an diesem Punkt können Sie StringWriter
verwenden.
Alternativ können Sie auch ein StreamWriter
um ein MemoryStream
erstellen und dann testen Der Inhalt dieses MemoryStream
später (entweder durch Zurückspulen oder durch Aufruf von ToArray()
, um den kompletten Inhalt als Bytearray zu erhalten Wenn du wirklich text testen willst, ist es definitiv einfacher ein StringWriter
zu benutzen.
Sie können es durch einen StreamWriter ersetzen, der in einen MemoryStream schreibt.
In diesem Fall müssen Sie sich über den Testfall lustig machen. Sie können Frameworks wie Rhino Mocks verwenden. Der Vorteil von Mocking Framework ist, dass Sie den Inhalt der Objekte überprüfen können, aber Sie müssen nicht den Server treffen oder Serverressourcen belegen.
Dieser Link bietet Ihnen die grundlegenden Beispiele: Ссылка
Tags und Links c# unit-testing streamwriter