У меня есть класс, который конструктор вызывает функцию в конструкторе. Когда я создаю mock для этого класса, тогда функция вызывается из конструктора. Я хочу заблокировать вызов функции. Могу ли я это сделать?Как игнорировать функцию вызова в конструкторе?
Пример кода:
public class Foo
{
public Foo()
{
Initialize();
}
private void Initialize()
{
//some code
}
}
[TestFixture]
public class Test
{
[Test]
public void Test_Foo()
{
Foo foo = MockRepository.GenerateMock<Foo>();
//some test
}
}
Примечания:
- Я не хочу, чтобы добавить интерфейс, как
Foo : IFoo
. - Я не хочу добавлять второй конструктор.
Вы не можете этого сделать. Вам нужно либо добавить второй конструктор, либо делегировать '.Initialize' на зависимость и впрыск. Что именно вы испытываете? Тестирование насмешливого объекта не имеет смысла, надеюсь, вы это знаете. –
Вы можете создать экземпляр Foo без вызова конструктора с помощью 'FormatterServices.GetUninitializedObject (...)'. Подробнее см. Здесь: http://stackoverflow.com/questions/178645/how-does-wcf-deserialization-instantiate-objects-without-calling-a-constructor – JYL