Используя RhinoMocks, как Вы дразните или блокируете реальный класс без пустого конструктора?

Абстрактный класс может иметь реализации.

интерфейс не имеет реализаций, он просто определяет своего рода контракт.

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

28
задан Mark Rogers 2 February 2011 в 23:28
поделиться

3 ответа

Ага. Просто передайте параметры в вызове StrictMock () :

// New FruitBasket that can hold 50 fruits.
MockRepository mocks = new MockRepository();
FruitBasket basket = mocks.StrictMock<FruitBasket>(50);
32
ответ дан 28 November 2019 в 03:38
поделиться

Если вы имитируете конкретный класс без пустого конструктора / конструктора по умолчанию, то Rhino Mocks придется использовать любые другие доступные конструкторы. Rhino потребуется, чтобы вы предоставили параметры для любых непустых конструкторов, поскольку он не будет иметь никакого представления, как их построить в противном случае.

Моя ошибка в том, что я пытался передать нули в CreateMock или GenerateMock , как только я сгенерировал ненулевой параметр для конструктора, вызовы для создания макета или заглушки начали работать.

3
ответ дан 28 November 2019 в 03:38
поделиться

Вы должны передать их после вашего DynamicMock оператора , который принимает в качестве аргумента массив параметров. К сожалению, здесь нет проверки типа, но он вызовет соответствующий конструктор, если вы сопоставите свои аргументы с подписью.

Например:

var myMock = MockRepository.DynamicMock<MyClassWithVirtuals>(int x, myObj y);
1
ответ дан 28 November 2019 в 03:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: