在方法中传递一个模型int作为参数

本文关键字:模型 一个 int 参数 方法 | 更新日期: 2023-09-27 18:11:37

我正在写一个单元测试,我写了一个方法来通过测试参数。其中一个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

在方法中传递一个模型int作为参数

嗯,是的,看看你的参数列表:

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);
}