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