EF6 - 无法模拟 ObjectResult 的返回值以进行单元测试

2024-03-24

我在尝试进行单元测试的方法中有与此类似的代码:

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<T>,不是旧的System.Data.Objects一)。它没有公共无参数构造函数,但是文档 https://msdn.microsoft.com/en-us/library/mt154818(v=vs.113).aspx#M:System.Data.Entity.Core.Objects.ObjectResult%601.说它有一个受保护的。根据我的测试,他的文档似乎不正确。

我尝试过的

我尝试创建一个派生类并调用base()在构造函数上,我也尝试过使用反射(都Activator.CreateInstance并调用ConstructorInfo with BindingFlags of NonPublic,所有这些都失败了(从我的调试看来,该类型确实有三个私有构造函数,所有这些构造函数都有 3 个或更多参数,但不幸的是,弄清楚这些参数实际需要什么似乎需要付出很大的努力) 。

我也尝试过创建一个IEnumerable<usp_get_Some_Data_Result>并将其投射到ObjectResult<usp_get_Some_Data_Result>,但转换失败。另外,我尝试过类似的东西

var mockObjectResult = new Mock<ObjectResult<usp_get_Some_Data_Result>>();

几乎我尝试过的所有操作都失败了,并出现有关默认构造函数不可用的类似错误。

Question

有没有办法创建一个实例ObjectResult<T>用于单元测试,或者我可以创建任何其他可以成功转换为的类型ObjectResult<T>?


也许我错过了一些东西,但你不能这样做:

class TestableObjectResult<T> : ObjectResult<T>
{
}

然后在你的测试中:

var mockObjectResult = new Mock<TestableObjectResult<usp_get_Some_Data_Result>>();

MockObject 确实有一个受保护的构造函数,您实际上不需要做任何事情来调用它,因为它没有任何参数,当您构造可测试版本时自动装配会处理它,所以我不是确定“在构造函数上调用 base()”是什么意思......

如果我右键单击 ObjectResult 并选择转到定义,文件顶部将如下所示:

public class ObjectResult<T> : ObjectResult, IEnumerable<T>, IEnumerable, IDbAsyncEnumerable<T>, IDbAsyncEnumerable
{
    // Summary:
    //     This constructor is intended only for use when creating test doubles that
    //     will override members with mocked or faked behavior. Use of this constructor
    //     for other purposes may result in unexpected behavior including but not limited
    //     to throwing System.NullReferenceException.
    protected ObjectResult();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EF6 - 无法模拟 ObjectResult 的返回值以进行单元测试 的相关文章

  • 尚未注册类型“IServiceProviderFactory[Autofac.ContainerBuilder]”的服务

    当运行以下命令添加数据库迁移脚本时 出现以下错误 dotnet ef migrations add InitialCreate v o Migrations context MyContext 访问 Microsoft Extensions
  • 我如何理解这个 C 类型声明?

    double bar int double double double double 在查看讲座幻灯片时 我发现了留给学生的练习 用简单的英语来说 什么是类型bar在这个 C 声明中 Please帮助我解决这个问题 我什至不知道从哪里开始
  • 使用 Enumerable.OfType() 或 LINQ 查找特定类型的所有子控件

    Existed MyControl1 Controls OfType
  • 平滑滚动.net 表单

    您好 我正在 net 中使用表单 并且在运行时动态添加大量链接标签 我将这些链接标签添加到面板并将该面板添加到 winform 当链接标签的数量增加时 表单会显示一个自动滚动条 垂直 现在 当我使用自动滚动向下滚动时 表单在滚动时不会更新其
  • EF Core 通过完全替换断开集合导航属性的更新

    使用 EF Core 5 0 我有一个 SPA 页面 可以加载Group实体及其集合Employee来自 API 的实体 var groupToUpdate await context Groups Include g gt g Emplo
  • 读取 C# 中的默认应用程序设置

    我的自定义网格控件有许多应用程序设置 在用户范围内 其中大部分是颜色设置 我有一个表单 用户可以在其中自定义这些颜色 并且我想添加一个用于恢复默认颜色设置的按钮 如何读取默认设置 例如 我有一个名为的用户设置CellBackgroundCo
  • 信号处理程序有单独的堆栈吗?

    信号处理程序是否有单独的堆栈 就像每个线程都有单独的堆栈一样 这是在 Linux C 环境中 来自 Linux 手册页signal 7 http kernel org doc man pages online pages man7 sign
  • 时间:2019-03-17 标签:c#ThreadSafeDeepCopy

    我一直在阅读很多其他问题以及大量谷歌搜索 但我一直无法找到明确的解决方案 根据我读过的一些最佳实践 类的静态方法应该创建线程安全的 并且实例成员应该将线程安全留给消费者 我想为该类实现深度复制方法 该类本身还有其他引用类型成员 有没有什么方
  • 动态生成的控件 ID 返回为 NULL

    我可以在 Page PreInit 函数中创建动态控件 如何检索控件及其 ID 我的 C 代码用于创建动态控件之一 var btn new WebForms Button btn Text btn ID Addmore btn Click
  • 如何从文本文件读取整数到数组

    这就是我想做的 我对此有些不满 但我希望你能容忍我 这对我来说是一个非常新的概念 1 在我的程序中 我希望创建一个包含 50 个整数的数组来保存来自文件的数据 我的程序必须获取用户的文档文件夹的路径 2 文件的名称为 grades txt
  • 如何在服务器端按钮点击时关闭当前标签页?

    我尝试在确认后关闭当前选项卡 因此我将以下代码放在确认按钮的末尾 但选项卡没有关闭 string jScript ClientScript RegisterClientScriptBlock this GetType keyClientBl
  • 检查 RoutedEvent 是否有任何处理程序

    我有一个自定义 Button 类 当单击它时 打开特定窗口 它总是执行相同的操作 我添加了一个可以在按钮的 XAML 中分配的 Click 事件 就像常规按钮一样 当它被单击时 我想执行 Click 事件处理程序 如果已分配 否则我想执行默
  • 将标量添加到特征矩阵(向量)

    我刚刚开始使用 Eigen 库 无法理解如何向所有矩阵成员添加标量值 假设我有一个矩阵 Eigen Matrix3Xf mtx Eigen Matrix3Xf Ones 3 4 mtx mtx 1 main cxx 104 13 error
  • 是否有相当于 Clang/LLVM 的 .spec 文件,在哪里可以找到参考?

    The gcc驱动程序可以配置为使用特定的链接器 特定的选项和其他细节 例如覆盖系统头 specs files 当前 截至撰写本文时 GCC 版本 4 9 0 的手册此处描述了规范文件 https gcc gnu org onlinedoc
  • 在 EnvDTE 中调试时捕获 VS 局部变量

    是否可以使用 EnvDTE 进行 vsix Visual Studio 扩展来捕获本地和调试窗口使用的调试数据 或者可以通过其他方法吗 我想创建一个自定义的本地窗口 我们可以修改它以根据需要显示一些较重的内容 而无需为高级用户牺牲原始的本地
  • 新任务中使用的依赖注入服务

    我在需要时使用依赖项注入来访问我的服务 但我现在想要创建一个并发任务 但这会由于依赖项注入对象及其生命周期而导致问题 我读过这篇文章 标题 防止多线程 Link http mehdi me ambient dbcontext in ef6
  • 了解使用 Windows 本机 WPF 客户端进行 ADFS 登录

    我已经阅读了大量有关 ADFS 与 NodeJS Angular 或其他前端 Web 框架集成以及一般流程如何工作的文献 并通过 Auth0 Angular 起始代码构建了概念证明 但我不明白如何这可以与本机 WPF Windows 应用程
  • 使用taskkill停止Windows服务

    我需要帮助来使用 C 终止 Windows 服务 现在要终止该服务 请使用以下选项 从命令 sc queryex ServiceName 发现后PID服务的 taskkill pid 1234 exemple f 为了便于阅读 但如果您明白
  • 在简单注入器中解析具有自定义参数的类

    我正在使用以下命令创建 WPF MVVM 应用程序简易注射器作为 DI 容器 现在 当我尝试从简单注入器解析视图时遇到一些问题 因为我需要在构造时将参数传递到构造函数中 而不是在将视图注册到容器时 因此这不是适用的 简单注入器将值传递到构造
  • 从 JavaScript 中的 OnClientClick 事件中阻止 C# 中的 asp:Button OnClick 事件?

    我有一个asp Button在我的网页上 它调用 JavaScript 函数和代码隐藏方法 后者进行调用以导航到另一个页面 在 JavaScript 函数中 我正在检查条件 如果不满足这个条件 我想中止导航 以便OnClick方法未被调用

随机推荐

  • 链接到外部 URL - 目前不成功

    当我尝试链接一个 ext Url 时 例如www facebook com目前它是 mysite com music www facebook com 其链接为 a href a
  • 如何在 IntelliJ 中为整个项目配置“缩短命令行”方法

    当我运行测试时 出现错误 命令行太长 如果我将运行 调试配置中的 缩短命令行 方法设置为特定方法或类的 JAR 清单 它会起作用 但如何为整个项目设置它 或者是否有 IDE 全局设置 在 idea 文件夹中 更改workspace xml
  • 安装包失败并显示: if (file.exists(dest) && file.mtime(dest) 中出现错误

    我正在尝试安装重新思考 httr set config httr config ssl verifypeer 0L with config use proxy http myco com 5555 install github rmcelr
  • JQuery Onselect?

    当我输入 DPRtelephonenumber 时 我想在 DPRcallerhometelephonenumber 中重复它 只要我打字 这个脚本就可以工作 但是 如果 提供以前使用的值的下拉列表 并且我选择它 则 不会被设置 那么 除了
  • 禁用 UITableview 触摸时显示选择时出现问题?

    我使用 IB 并取消选中 触摸时显示选择 但它仍然在选定的单元格上显示蓝色突出显示 这是苹果的错误还是我出了问题 这可能是 IB 中的一个错误 正如您在文档中看到的那样 表视图没有任何用于在触摸时显示选择的属性 它是 tableview c
  • 在 python Altair 图中的热图中添加间距

    是否可以在使用创建的热图中添加一些间距mark rect 在 Altair python 图中 图 1 中的热图将转换为图 2 中的热图 您可以假设这是来自dataframe每列对应一个变量 我故意像这样画白条以避免任何硬编码的索引解决方案
  • java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal

    我正在尝试使用页面工厂和页面对象模型运行一个Java项目 我想在Chrome IE和Firefox上运行它 但我无法在Firefox上运行它 浏览器无法打开 我得到了这个错误 java lang NoClassDefFoundError o
  • 如何减小 NTFS 中文件夹索引文件的大​​小?

    我有一个 NTFS 文件夹 其中包含数万个文件 我已删除该文件夹中的所有文件 保存 1 我运行 contig exe 对该文件夹进行碎片整理 因此现在它仅包含 1 个片段 然而 该文件夹的大小仍然是 8MB 这意味着该指数存在很大差距 这是
  • 手动创建类以映射到 XML 请求响应

    我被指派实现一个使用 XML 请求 响应的 API 接口 API 提供商不为 XML 调用提供任何 xsd 我使用 xsd exe 生成了 C 类 xml gt xsd gt cs 但是 我发现生成的类并不令人满意 因为调用包含大量列表 而
  • 栈和堆的内存分配

    这似乎是一个非常基本的问题 但它一直在我的脑海中 当我们分配一个局部变量时 它会进入堆栈 类似地 动态分配会导致变量位于堆上 现在 我的问题是 这个变量实际上位于堆栈还是堆上 还是我们只是堆栈和堆中的引用 例如 假设我声明一个变量int i
  • 如何从 hive cli 运行 hive 脚本

    我现在有 hive 脚本 custsales hql 我想从 hive cli 运行它 hive pract5 gt run user training hdfs location custsales hql 但它不执行 请指导 我知道我们
  • 何时在 AngularJS 应用程序中使用自定义指令、ui-view 和 ng-include?

    我正在构建一个大型 复杂的 AngularJS 应用程序 想想 ERP 系统 我很难决定何时适合使用ui view ng include or a custom directive templateURL 我将举几个具体的例子 给大家一些参
  • WebAPI 和 ODataController 返回 406 不可接受

    在将 OData 添加到我的项目之前 我的路线设置如下 config Routes MapHttpRoute name ApiById routeTemplate api controller id defaults new id Rout
  • 将 Python 字典和列表压缩在一起

    是否可以将 python 字典和列表压缩在一起 例如 dict A 1 B 2 C 3 num list 1 2 3 zipped zip dict num list 然后我想做这样的事情 for key value num list en
  • C# 中调用另一个 Button 的代码

    我需要知道是否可以从另一个按钮调用单击按钮 private void myAction Click object sender EventArgs e int x private void Go Click object sender Ev
  • web.xml 中的白名单安全约束

    我正在为我的 Struts2 应用程序使用 Tomcat 这web xml具有某些条目 如下所示
  • 与元素类型“beans”关联的属性“xsi:schemaLocation”的前缀“xsi”未绑定

    为什么我会出现这个错误 致命错误 与元素类型 beans 关联的属性 xsi schemaLocation 的前缀 xsi 未绑定 在我的 XML 文件的标题处
  • 在国际范围内将多行 csv 文件导入 Excel

    我们想要分发给客户一个 csv 文件 它包含多行条目 即带有换行符的条目 根据客户的语言设置 文件可能会也可能不会正确导入到 Excel 中 通常 我们建议使用导入文件 但多行条目似乎存在一些错误 因此它们会 分解 成单独的行 奇怪的是 直
  • WPF 中的条件列表项模板或数据模板

    这可能是一个显而易见的问题 但我认为很可能有多种方法来实现它 所以这不仅对我有用 希望对其他人也有用 本质上 我正在寻找实现列表视图的最佳方法 该视图可以接受不同类型的对象 然后使用该对象的适当项目 数据模板来呈现它们 例如 我们有一个标准
  • EF6 - 无法模拟 ObjectResult 的返回值以进行单元测试

    我在尝试进行单元测试的方法中有与此类似的代码 return context usp get Some Data someStringParam FirstOrDefault 存储过程调用返回类型 ObjectResult