2013-05-01 58 views
0

中传递一个模型int作为参数我正在编写一个单元测试,并且我编写了一个方法来传入测试参数。我的一个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); 

这不是likeing的( 10),它希望ElementType

回答

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

感谢您澄清这个真的有帮助! – Masriyah 2013-05-01 15:52:00