C# Rhino Mocks-将模拟类作为参数传递时构造函数失败

C# Rhino Mocks-将模拟类作为参数传递时构造函数失败,c#,unit-testing,rhino-mocks,C#,Unit Testing,Rhino Mocks,编辑: 我完全是在重复这个问题,因为我以前没有正确地表达它 除了我的测试类之外的所有东西都是API的一部分。我将一个模拟接口传递给一个模拟类,然后将该模拟类传递给我的测试类。我的测试类扩展了一个类,构造函数的主体是空的。我的代码在构造函数处中断,这意味着失败在基类构造函数中,基类构造函数的实现是隐藏的。我很抱歉,如果有任何不清楚的地方,请让我知道,我会重新表述任何不清楚的部分。提前感谢您的帮助 下面是一个代码示例: public class TestClass : ApiClass0 {

编辑: 我完全是在重复这个问题,因为我以前没有正确地表达它

除了我的测试类之外的所有东西都是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
    }
}
公共类TestClass:ApiClass0
{
ApiClass1;
公共测试类(ApiClass1 ApiClass1):基(ApiClass1)
{ 
this.apiClass1=apiClass1;
}
公共无效方法测试()
{
apiClass1.Method0();
}
}
公共类ApiClass0
{
公共ApiClass0(ApiClass1 ApiClass1){}
}
公共类1
{
公共ApiClass1(iapii接口){}
公共方法0(){}
}
公共接口IApiInterface0{}
公共类TestClassTest
{
[测试初始化()]
public void TestInitialize()
{
IApiInterface0-mApiInterface0=MockRepository.GenerateMock();
ApiClass1-mApiClass1=MockRepository.GenerateMock(mApiInterface0);
TestClass TestClass=newTestClass(mApiClass1);//此处代码中断
}
}

ApiClass1的构造函数将
IApiInterface
作为参数,但测试使用
IApiInterface 0
调用它。更改其中任何一项,测试都会通过。

您的意思真的不清楚。。。如果您试图模拟它,为什么“需要能够首先实例化它”?模拟框架将创建实例本身。我不认为您可以提供一些示例代码来说明您的情况?@JonSkeet抱歉,这就是我的意思,当我调用GenerateMock(使用Rhino)时,我得到了空引用exception@tmakino当前位置问题出在哪里还不清楚。如果您可以包含示例代码,这肯定会很有帮助。。。(这是我们第一次听说NullReferenceException!)“空引用”?再一次,这是我们第一次听说你得到了什么样的实际错误。
Complex
是否实际实现了一个接口?在我看来,这通常应该是你嘲笑的。如果它还没有实现一个接口,你能把它包装在自己创建的接口中,然后模仿它吗?