我有以下方法,它是一种扩展方法,可以被任何 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%代码覆盖率。