2013-04-10 59 views
1

编辑构造失败。除了我的测试类犀牛嘲笑路过的时候模拟类作为参数

一切都是API的一部分。我将一个模拟接口传递给一个模拟类,然后将这个模拟类传入我的测试类。我的测试类扩展了一个类,而构造函数的主体是空的。我的代码在我的构造函数中断,意味着失败是在基类构造函数中,其实现是隐藏的。如果有任何不清楚的地方,我表示歉意,请让我知道,我会重新说明任何不清楚的部分。预先感谢您的帮助。

下面是一个代码示例:

public class TestClass : ApiClass0 
{ 
    ApiClass1 apiClass1; 
    public TestClass(ApiClass1 apiClass1) : base(apiClass1) 
    { 
     this.apiClass1 = apiClass1; 
    } 
    public void MethodToTest() 
    { 
     apiClass1.Method0(); 
    } 
} 

public class ApiClass0 
{ 
    public ApiClass0(ApiClass1 apiClass1) { } 
} 

public class ApiClass1 
{ 
    public ApiClass1(IApiInterface i) {} 
    public Method0() { } 
} 

public interface IApiInterface0 {} 

public class TestClassTest 
{ 
    [TestInitialize()] 
    public void TestInitialize() 
    { 
     IApiInterface0 mApiInterface0 = MockRepository.GenerateMock<IApiInterface0>(); 
     ApiClass1 mApiClass1 = MockRepository.GenerateMock<ApiClass1>(mApiInterface0); 
     TestClass testClass = new TestClass(mApiClass1); //code breaks here 
    } 
} 
+3

这真的不清楚你的意思......你为什么“需要能够先初始化它,”如果你试图嘲弄吗?模拟框架将*创建实例本身。 – 2013-04-10 18:35:17

+1

我不认为你可以提供一些示例代码来说明你的情况? – PinnyM 2013-04-10 18:36:35

+0

@JonSkeet对不起,这就是我的意思,当我叫GenerateMock(使用犀牛),这时候我得到了空引用异常 – tmakino 2013-04-10 18:39:26

回答

0

ApiClass1构造函数在IApiInterface作为参数,但测试与IApiInterface0调用它。更改其中任何一项,测试将通过。