从封闭的流中读取

时间:2011-08-12 15:10:25

标签: c# .net stream

我想在单元测试中测试我的请求构建器。但是当我想测试发出POST请求的方法时,我遇到了问题。我想在请求流中测试它的内容。 但问题是我无法在测试中读取此流,因此无法测试我的数据是否以正确的方式写入请求内。 我有这个问题,因为当我在Request builder类中写入后关闭流。我无法打开它进行读取,因为在流上调用Close()方法后,它变得不可读。 那么,有没有办法在调用Close()方法后读取流?

如果无法做到这一点,你会如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

尝试在Stream周围创建一些包装并提取它的界面。此界面可能只包含其他代码中必需的成员。 在您的代码中使用该接口,并允许注入/创建要使用的不同特定类型的实例 - 例如创建必需的构造函数的参数,该参数在包含代码的类中设置字段。 然后创建一些模拟实现该接口并在单元测试中使用它。

答案 1 :(得分:0)

一旦流关闭,其内容实际上是不可访问的,因为底层缓冲区被释放或传递给另一个实体进行处理或处置。

我不确定您正在使用哪个Stream类,但大多数提供.Seek方法和.Position属性来回放流。尝试而不是关闭流。 (虽然你真的完成它后仍然需要关闭流。)