Как мне покрыть этот метод? Копировать содержимое потока во второй поток

У меня есть следующий метод, это метод расширения и может быть вызван любым объектом потока. Метод должен копировать точное содержимое потока в другой поток.

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)?

Попробуйте переименовать ваш метод расширения, чтобы избежать конфликта имен.

Другие вопросы по тегам