【问题标题】:Need help in Unit Test using Moq for the particular code需要针对特定​​代码使用 Moq 进行单元测试的帮助
【发布时间】:2014-02-27 19:05:27
【问题描述】:

我已经创建了 DataColumn 类。现在我想使用 Moq 进行单元测试。我应该如何为此编写代码?

 [Serializable]
 public class DataColumn<T> : IDataColumn
 {

    private string columnName = null;

    private T defaultValue;

     public DataColumn(string columnName) : this(columnName, default(T))
     {
     }


    public DataColumn(string columnName, T defaultValue)
    {
        ColumnName = columnName;
        DefaultValue = defaultValue;
     }


    public T DefaultValue
    {
        get
        {
            return defaultValue;
        }

        set
        {
            defaultValue = value;
        }
    }

    public bool IsDefaultValueDefined()
    {
        return ReferenceEquals(defaultValue, default(T));
    }

    public string ColumnName
    {
        get
        {
            return columnName;
        }

        set
        {
            this.columnName = value;
        }
    }

    public Type DataType
    {
        get
        {
            return typeof(T);
        }
    }

    public override string ToString()
     {
         return ColumnName + "[" + DataType.Name + "]" + (IsDefaultValueDefined() ? " (" + DefaultValue + ")" : " ");
     }

如何为这段代码创建单元测试?

【问题讨论】:

    标签: c# testing moq uint


    【解决方案1】:

    不知道为什么你需要起订量来测试这个,你想起订量这个类来测试另一个吗?

    Mock<IDataColumn<T>> dc = new Mock<IDataColumn<T>>();
    dc.Setup(s=>s.IsDefaultValueDefined).Returns(true);
    someOtherObject.SomeMethod(dc.object);
    dc.verfiy(s=>s.IsDefaultValueDefined, Times.Once());
    

    【讨论】:

    • 我想使用 moq 创建单元测试来测试另一个类。我正在为表格数据库创建类库
    • 上面的代码模拟了 IDataColumn IsDefaultValueDefined,这样每次调用它都会返回 true。最后一行将验证它实际上被调用了一次。希望这个例子有帮助
    • 对不起 将是一些实现类,如字符串。如果 T 是接口的,你甚至可以模拟它,但通常任何存根都会做,因为你没有实际测试 T
    猜你喜欢
    • 2010-12-30
    • 1970-01-01
    • 2010-12-05
    • 2011-08-12
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    相关资源
    最近更新 更多