0

我正在编写一个单元测试,并且我编写了一个方法来传递参数进行测试。我的一个 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);
        }
    }

元素类型模型:

public int ModelId { get; set; }

单元测试代码进行测试:

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

这里它不喜欢 (10) 并且它想要 ElementType

4

1 回答 1

4

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

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

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

您应该更改GetTypemodelId直接使用:

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);
}
于 2013-05-01T15:47:12.640 回答