如何在Mock对象中初始化List <t>属性?</t>

时间:2013-03-08 19:00:30

标签: c# unit-testing moq

我的[TestInitialize]块中有以下代码,我正在尝试在对象上初始化List<T>属性。

[TestClass]
public class MyTest
{
    private MyClass myClass;
    private Mock<myClassA> mockMyClassA;
    private List<Mock<myClassB>> mockMyClassB; //OK

    [TestInitialize]
    public void Setup()
    {
        mockMyClassA = new Mock<myClassA>();
        mockMyClassB = new List<Mock<myClassB>>(); //OK


        myClass = new MyClass
        {
            MyClassA = mockMyClassA.Object,
            MyClassB = mockBenefitsCoordination //None of this works
            {
                new Mock<mockMyClassB>()
                    {
                        //PropertyValue = mock??                            
                    }                    
            }
        }

我得到的错误是:

Cannot convert source type 'System.Collections.Genric.List<Moq.Mock<MyClassB>>' to target type 'System.Collections.Generic.IList<MyClassB>>'

好的,我看到了List<T> to IList<T>问题。 MyClassBIList<T>。我试过改变它没有成功。基本上我认为我有使用Moq配置List属性的完整语法。有谁知道如何正确配置这个?

1 个答案:

答案 0 :(得分:2)

您不希望使用模拟初始化列表。您希望使用具体对象进行列表初始化,并将模拟对象添加到该列表中。

这样的东西
private List<myClassB> myClassBList;
myClassBList.Add(new Mock<myClassB>.Object);