我目前有这样的方法
public void BusinessMethod(object value, StreamWriter sw)
{
//Calls a private method that converts the data in `value` to a custom formatted string variable `str`
string str = myPrivateMethod(value);
//write the string to stream
sw.Write(str);
}
我正在尝试使用提到的here方法来测试此方法,并且做了完全相同的事情。但是,我的result
字符串以空字符串形式返回。我无法更改方法签名。如何测试这样的方法?我正在使用Nunit进行测试。
这是我的测试方法
[Test]
public void My_Test()
{
MyPoco dto = new MyPoco ();
//set up the dto properties here
using (var stream = new MemoryStream())
using (var writer = new StreamWriter(stream))
{
sut.BusinessMethod(dto, writer);
string result = Encoding.UTF8.GetString(stream.ToArray());
}
}
答案 0 :(得分:3)
您需要Close
/ Flush
/ Dispose
编写器,因此它实际上会将更改提交到流:
using (var stream = new MemoryStream())
{
using (var writer = new StreamWriter(stream))
{
sut.BusinessMethod(dto, writer);
}
// moved outside of inner using to ensure writer stored content to stream
string result = Encoding.UTF8.GetString(stream.ToArray());
}