Абстрактный класс может иметь реализации.
интерфейс не имеет реализаций, он просто определяет своего рода контракт.
могут также быть некоторые языковозависимые различия: например, C# не имеет множественного наследования, но несколько интерфейсов могут быть реализованы в классе.
Ага. Просто передайте параметры в вызове StrictMock ()
:
// New FruitBasket that can hold 50 fruits.
MockRepository mocks = new MockRepository();
FruitBasket basket = mocks.StrictMock<FruitBasket>(50);
Если вы имитируете конкретный класс без пустого конструктора / конструктора по умолчанию, то Rhino Mocks придется использовать любые другие доступные конструкторы. Rhino потребуется, чтобы вы предоставили параметры для любых непустых конструкторов, поскольку он не будет иметь никакого представления, как их построить в противном случае.
Моя ошибка в том, что я пытался передать нули в CreateMock
или GenerateMock
, как только я сгенерировал ненулевой параметр для конструктора, вызовы для создания макета или заглушки начали работать.
Вы должны передать их после вашего DynamicMock
оператора , который принимает в качестве аргумента массив параметров. К сожалению, здесь нет проверки типа, но он вызовет соответствующий конструктор, если вы сопоставите свои аргументы с подписью.
Например:
var myMock = MockRepository.DynamicMock<MyClassWithVirtuals>(int x, myObj y);