我有構造函數調用構造函數的類。當我爲這個類創建模擬時,函數是從構造函數中調用的。我想阻止函數調用。我可以做嗎?如何忽略構造函數中的調用函數?
示例代碼:
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'委託給依賴項並注入。你究竟在測試什麼?測試嘲弄的對象毫無意義,我希望你知道。 – 2012-04-25 12:07:11
您可以在不使用'FormatterServices.GetUninitializedObject(...)'調用構造函數的情況下創建Foo的實例。詳情請看這裏:http://stackoverflow.com/questions/178645/how-does-wcf-deserialization-instantiate-objects-without-calling-a-constructor – JYL 2015-02-17 13:57:24