从封闭的流中读取

本文关键字:读取 | 更新日期: 2023-09-27 18:05:30

我想在单元测试中测试我的请求构建器。但我有问题,当我想测试我的方法,使POST请求。我想在请求流中测试它的内容。但问题是,我不能在我的测试中读取这个流,所以我不能测试我的数据是否在请求中以正确的方式写入。我有这个问题,因为当我在我的请求构建器类中编写后关闭流。我无法打开它进行读取,因为在流上调用Close()方法后,它变得不可读。那么,是否有一种方法来读取流调用Close()方法后?

如果这是不可能的,你会如何解决这个问题?

从封闭的流中读取

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

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

我不确定你在使用哪个流类,但大多数都提供了一个。seek方法和一个。position属性来倒带流。试试这个,而不是关闭流。(虽然你仍然需要关闭流一旦你真正完成它。)