Rhino Mocks - 构造函数在传递mock类作为参数时失败

时间:2013-04-10 18:34:00

标签: c# unit-testing rhino-mocks

编辑: 我完全重申了这个问题,因为我以前没有正确地阐述它。

除了我的测试类之外的所有内容都是API的一部分。我将一个模拟接口传递给一个mock类,然后将该mock类传递给我的测试类。我的测试类扩展了一个类,构造函数的主体是空的。我的代码在我的构造函数中断,意味着失败在基类构造函数中,其实现是隐藏的。如果有任何不清楚的地方我很抱歉,请告诉我,我会重新说明任何不清楚的部分。提前感谢您的帮助。

这是一个代码示例:

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
    }
}

1 个答案:

答案 0 :(得分:0)

ApiClass1的构造函数接受IApiInterface作为参数,但测试使用IApiInterface0调用它。改变其中任何一个,测试将通过。