【发布时间】:2015-09-13 18:49:14
【问题描述】:
我在尝试单元测试的方法中有类似的代码:
return _context.usp_get_Some_Data(someStringParam).FirstOrDefault();
存储过程调用返回类型:
ObjectResult<usp_get_Some_Data_Result>.
在我的单元测试中,我正在尝试做这样的事情(使用 NUnit 和 Moq):
var procResult = new ObjectResult<usp_get_Some_Data_Result>();
mockContext.Setup(m => m.usp_get_Some_Data(It.IsAny<string>()))
.Returns(procResult);
但是,我无法创建 ObjectResult 的实例(这是 System.Data.Entity.Core.Objects.ObjectResult
我的尝试: 我尝试在构造函数上创建派生类并调用 base(),并且我还尝试使用反射(Activator.CreateInstance 和使用 NonPublic 的 BindingFlags 调用 ConstructorInfo,所有这些都失败了(从我的调试中出现)这表明该类型确实具有三个私有构造函数,所有这些构造函数都有 3 个或更多参数,但不幸的是,要弄清楚这些参数实际需要什么似乎是一项重大努力。
我也尝试创建一个 IEnumberable
var mockObjectResult = new Mock<ObjectResult<usp_get_Some_Data_Result>>();
我尝试过的几乎所有事情都失败了,并出现了关于默认构造函数不可用的类似错误。
问题:
有没有办法为单元测试创建 ObjectResult
【问题讨论】:
标签: c# unit-testing mocking entity-framework-6 moq