将模型int作为方法中的参数传递

时间:2013-05-01 15:45:13

标签: c# asp.net-mvc unit-testing

我正在编写单元测试,并且我编写了一个方法来传递参数以进行测试。我的一个id是一个整数但是不同的类型。这就是我所拥有的:

服务层:

public IEnumerable<IElement> GetType(int id, int userId, ElementType type, int depth = 2)
    {
        using (var db = database.connection)
        {

            var _results = db.table<_ElementBase>(id, userId, type.ModelId, IElementExtensions.IElementFactory(), depthLevel: depth);
            return _results.FilterByPermissions(userId);
        }
    }

ElementType模型:

public int ModelId { get; set; }

要测试的单元测试代码:

 var _elements = _elementSvc.GetType(82,1,10,2);

这里它不像(10),它想要ElementType

1 个答案:

答案 0 :(得分:4)

是的 - 看看您的参数列表:

GetType(int id, int userId, ElementType type, int depth = 2)

你如何期望将第三个参数(10)转换为ElementType?您如何期望从中提取ModelId

您应该更改GetType以直接点击modelId

public IEnumerable<IElement> GetType(int id, int userId, int modelId, int depth = 2)
{
    using (var db = database.connection)
    {
        var _results = db.table<_ElementBase>(id, userId, modelId, 
                 IElementExtensions.IElementFactory(), depthLevel: depth);
        return _results.FilterByPermissions(userId);
    }
}

如果您仍想要原始签名,则可以重载该方法:

public IEnumerable<IElement> GetType(int id, int userId, ElementType type,
                                     int depth = 2)
{
    return GetType(id, userId, type.ModelId, depth);
}