问题描述
我正在使用下面的api代码的Microsoft Fake框架编写单元测试用例。我已经为查询创建器类中的函数创建了MyQueryBuilder,GetMyFunctionDetails,Execute函数的shim对象。但是,在返回行result.ToList()
对象引用未设置为对象的实例
我认为映射器无法将数据库实体映射到DTO。我不确定如何处理。任何帮助都会很棒。
public IList<MyDTO> GetAPI(string ID,bool IsActive)
{
using (var ctx = new DataContext())
{
var mapper = AutomapperBuilder.MyMapperFunction(ctx);
MyQueryBuilder obj = new MyQueryBuilder(ctx);
obj.GetMyFunctionDetails(id,true);
List<DatabaseEntityObject> lst = new List<DatabaseEntityObject>();
lst = obj.Execute().AsQueryable().ToList();
var result = mapper.ProjectTo<MyDTO>(lst.AsQueryable());
return result.ToList();
}
}
下面是单元测试用例
[TestMethod]
public void Test_ResultOk()
{
using (ShimsContext.Create())
{
//Arrange
List<DatabaseEntityObject> lstTaskDetailsDTO = null;
using (var ctx = new DataContext())
{
MyQueryBuilder objQueryBuilder = new MyQueryBuilder(ctx);
ShimMyQueryBuilder.AllInstances.GetMyFunctionDetailsstringBoolean = (_,__,___) =>
{
return objQueryBuilder;
};
ShimMyQueryBuilder.AllInstances.Execute = (_) =>
{
lstTaskDetailsDTO = new List<DatabaseEntityObject>()
{
new DatabaseEntityObject
{
projectid = PID
name = Name
}
};
return lstTaskDetailsDTO;
};
//Act
var controller = new MyController();
var result = controller.GetMyAPI(ID,true);
//Assert
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)