Как мне покрыть этот метод? Копировать содержимое потока во второй поток
У меня есть следующий метод, это метод расширения и может быть вызван любым объектом потока. Метод должен копировать точное содержимое потока в другой поток.
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);
}
}
Я создал один простой тест, чтобы убедиться, что содержимое исходного потока равно содержимому конечного потока:
[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% покрытие кода по этому методу.
1 ответ
Решение
Возможно, ваш код не вызывает метод расширения, а вместо этого вызывает метод Stream.CopyTo(Stream)?
Попробуйте переименовать ваш метод расширения, чтобы избежать конфликта имен.