2

IEnumerable パラメータを含むコンストラクタがあります。具体的なオブジェクトを automocker に注入しようとすると、使用されません。

IEnumerable プロパティを含むラッパー クラスを使用すると、すべて期待どおりに動作します。

TestClass1 をテストするにはどうすればよいですか?

IEnumerable パラメータ

public class TestClass1
{
    public TestClass1(IEnumerable<IItem> items)
    {
        Items = items;
    }

    public IEnumerable<IItem> Items { get; private set; }
}

[TestMethod]
public void TestClass1Constructor()
{
    RhinoAutoMocker<TestClass1> autoMocker = new RhinoAutoMocker<TestClass1>();

    IEnumerable<IItem> items = new[] { MockRepository.GenerateMock<IItem>() };
    autoMocker.Inject(items);

    Assert.AreEqual(1, autoMocker.ClassUnderTest.Items.Count());
}

テストの結果は次のとおりです。

Assert.AreEqual が失敗しました。予想:<1>。実際:<0>。

ラッパー クラス パラメータ

public class TestClass2
{
    public TestClass2(WrapperClass numbersWrapper)
    {
        Items = numbersWrapper.Items;
    }

    public IEnumerable<IItem> Items { get; private set; }
}

[TestMethod]
public void TestClass2Constructor()
{
    RhinoAutoMocker<TestClass2> autoMocker = new RhinoAutoMocker<TestClass2>();

    WrapperClass numbers = new WrapperClass(new[] { MockRepository.GenerateMock<IItem>() });
    autoMocker.Inject(numbers);

    Assert.AreEqual(1, autoMocker.ClassUnderTest.Items.Count());
}

テストの結果は次のとおりです。

成功。

4

1 に答える 1