Ответ 1
Угу. Просто передайте параметры в своем вызове StrictMock()
:
// New FruitBasket that can hold 50 fruits.
MockRepository mocks = new MockRepository();
FruitBasket basket = mocks.StrictMock<FruitBasket>(50);
Издевательство над конкретным классом с Rhino Mocks кажется довольно простым, когда у вас есть пустой конструктор класса:
public class MyClass{
public MyClass() {}
}
Но если я добавлю конструктор, который принимает параметры и удаляет тот, который не принимает параметры:
public class MyClass{
public MyClass(MyOtherClass instance) {}
}
Я получаю исключение:
System.MissingMethodException: не удается найти конструктор с совпадением Аргументы
Я пробовал помещать нули в свой призыв к Mock или Stub, но он не работает.
Могу ли я создать mocks и stubs конкретных классов, которым не нужны конструкторы без параметров?
Угу. Просто передайте параметры в своем вызове StrictMock()
:
// New FruitBasket that can hold 50 fruits.
MockRepository mocks = new MockRepository();
FruitBasket basket = mocks.StrictMock<FruitBasket>(50);
Если вы создадите конкретный класс без пустого/стандартного конструктора, тогда Rhino Mocks придется использовать любые другие конструкторы. Rhino будет нуждаться в том, чтобы вы предоставили параметры для любых непустых конструкторов, так как у него не будет никаких подсказок, как их создавать иначе.
Моя ошибка в том, что я пытался передать нули в вызов CreateMock
или GenerateMock
, как только я сгенерировал aa ненулевой параметр для конструктора, вызовы для создания макета или заглушки начали работать.
Вы должны передать их после своего оператора DynamicMock<T>
, который принимает массив параметров в качестве аргумента. К сожалению, там нет проверки типа, но он будет вызывать соответствующий конструктор, если вы сопоставляете свои аргументы с сигнатурой.
Например:
var myMock = MockRepository.DynamicMock<MyClassWithVirtuals>(int x, myObj y);