Носорог Издевается:Как издеваться над потоком данных ADO.NET?

StackOverflow https://stackoverflow.com/questions/155797

  •  03-07-2019
  •  | 
  •  

Вопрос

ADO.NET имеет пресловутый класс DataRow, экземпляр которого вы не можете создать с помощью new .Это проблема теперь, когда я нахожу необходимым высмеять ее с помощью Rhino Mocks.

У кого-нибудь есть какие-нибудь идеи, как я мог бы обойти эту проблему?

Это было полезно?

Решение

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

SetupResult.For(someMockClass.GetDataRow(input)).Return(GetReturnRow());

public DataRow GetReturnRow()
{
    DataTable table = new DataTable("FakeTable");
    DataRow row = table.NewRow();
    row.value1 = "someValue";
    row.value2 = 234;

    return row;
}

Если это не та ситуация, в которой вы находитесь, то мне понадобится несколько примеров кода, чтобы понять, что вы пытаетесь сделать.

Другие советы

Я также использую Типовой блок Изолятор для этого, он может издеваться над вещами, которые не под силу другим фреймворкам-издевательницам.

Каждый раз, когда я не могу над чем-то поиздеваться (я предпочитаю MoQ, а не Rhino, но это к делу не относится) Мне приходится обходить это кодом.

Насколько я понимаю, у тебя есть только два варианта.Заплатите за улучшенный фреймворк, такой как TypeMock, который может издеваться над ЛЮБЫМ классом, или закодируйте оболочку вокруг классов, которые были написаны не для того, чтобы их издевали.

Это печальное положение дел в фреймворке.Во времена 1.1 TDD не вызывал большой озабоченности.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top