我有以下方法,它是一个扩展方法,可以被任何Stream对象调用。该方法应将 Stream 的确切内容复制到另一个 Stream。
public static void CopyTo(this Stream input, Stream output)
{
const int size = 10;
int num;
var buffer = new byte[size];
input.Position = 0;
while ((num = input.Read(buffer, 0, buffer.Length)) != 0)
{
output.Write(buffer, 0, num);
}
}
我创建了一个简单的测试来验证原始 Stream 的内容是否等于最终 Stream 的内容:
[TestMethod]
public void StreamWithContentShouldCopyToAnotherStream()
{
// arrange
var content = @"abcde12345";
byte[] data = Encoding.Default.GetBytes(content);
var stream = new MemoryStream(data);
var expectedStream = new MemoryStream();
// act
stream.CopyTo(expectedStream);
// assert
expectedStream.Length
.Should()
.Be(stream.Length, "The length of the two streams should be the same");
}
不幸的是,我只介绍了这个方法的一部分,因为我不验证内容是否完全相同。dotCover 也向我展示了我的代码的第一部分根本没有被覆盖,这就是:
我的目标是这种方法的 100% 代码覆盖率。