gpt4 book ai didi

c# - 使用 StreamWriter 作为参数之一对 void 方法进行单元测试

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:57 25 4
gpt4 key购买 nike

我目前有这样的方法

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());
}
}

最佳答案

您需要Close/Flush/Dispose writer 以便它实际提交对流的更改:

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());
}

关于c# - 使用 StreamWriter 作为参数之一对 void 方法进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33241658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com