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());
}
テストの結果は次のとおりです。
成功。