0

編集:以前は正しく明確に説明していなかったため、この質問を完全に言い直しています。

テスト クラス以外はすべて 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
    }
}
4

1 に答える 1

0

のコンストラクターは引数としてApiClass1受け取りIApiInterfaceますが、テストはそれを で呼び出しますIApiInterface0。これらのいずれかを変更すると、テストに合格します。

于 2013-04-18T08:31:38.943 に答える