模拟实体框架核心上下文

2024-04-03

我尝试测试我的应用程序,因此我需要模拟我的 EF 上下文。

我的代码似乎没问题,但有以下异常:

“System.ArgumentNullException:值不能为空。参数名称: 来源”

这是我的测试方法:

  var options = new DbContextOptionsBuilder<ProductContext>().Options;
    var settings = new SqlSettings
    {
        InMemory = true
    };

    var context = new Mock<ProductContext>(options, settings);
    var mockTreeService = new TreeService(context.Object);
    await mockTreeService.CreateTreeAsync("Testing tree", Guid.NewGuid());

    context.Verify(x => x.AddAsync(It.IsAny<Tree>(), CancellationToken.None), Times.Once);

看起来这个异常是在执行这段代码时抛出的

            var tree = await _context.Trees
                .Include(x => x.Translation)
                .FirstOrDefaultAsync(x => x.Translation.Pl == name);

它来自我正在测试的服务


我认为这是由于没有设置连接字符串造成的。坦白说,完全模拟有点困难DbContext,这就是 EF Core 团队提供内存中实现的原因。这对于测试目的来说更容易使用。只需改变你的options初始化为:

var options = new DbContextOptionsBuilder<ProductContext>()
                  .UseInMemoryDatabase(Guid.NewGuid().ToString())
                  .Options;

然后,您需要使用测试数据填充数据库。然后,您可以运行其余的测试。

注意:如果您使用内存数据库,则无需再模拟上下文,因此您可以删除该代码。内存数据库本身本质上就是一个模拟。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模拟实体框架核心上下文 的相关文章

  • Mono 无法保存用户设置

    我在 Mono Ubuntu 上保存用户设置时遇到问题 这是代码示例 private void Form1 Load object sender EventArgs e string savedText Properties Setting
  • MEX 文件中的断言导致 Matlab 崩溃

    我正在使用mxAssert 宏定义为matrix h在我的 C 代码中 mex 可以完美编译 当我调用的 mex 代码中违反断言时 该断言不会导致我的程序崩溃 而是导致 Matlab 本身崩溃 我错过了什么吗 这是有意的行为吗 当我查看 M
  • 添加对共享类的多个 WCF 服务的服务引用

    我正在尝试将我的 WCF Web 服务拆分为几个服务 而不是一个巨大的服务 但是 Visual Studio Silverlight 客户端 复制了两个服务共享的公共类 这是一个简单的例子来说明我的问题 在此示例中 有两个服务 两者都返回类
  • 在 C++ 中分割大文件

    我正在尝试编写一个程序 该程序接受一个大文件 任何类型 并将其分成许多较小的 块 我想我已经有了基本的想法 但由于某种原因我无法创建超过 12 kb 的块大小 我知道谷歌等上有一些解决方案 但我更感兴趣的是了解这个限制的根源是什么 然后实际
  • 通信对象 System.ServiceModel.Channels.ServiceChannel 不能用于通信

    通信对象System ServiceModel Channels ServiceChannel 无法用于通信 因为它处于故障状态 这个错误到底是什么意思 我该如何解决它 您收到此错误是因为您让服务器端发生 NET 异常 并且您没有捕获并处理
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • ASP .NET MVC,创建类似路由配置的永久链接

    我需要帮助在 MVC 网站中创建类似 URL 路由的永久链接 Slug 已设置为 www xyz com profile slug 代码为 routes MapRoute name Profile url profile slug defa
  • 如何在 VS 中键入时显示方法的完整文档?

    标题非常具有描述性 是否有任何扩展可以让我看到我正在输入的方法的完整文档 我想查看文档 因为我可以在对象浏览器中看到它 其中包含参数的描述和所有内容 而不仅仅是一些 摘要 当然可以选择查看所有覆盖 它可能是智能感知的一部分 或者我不知道它并
  • 为什么密码错误会导致“填充无效且无法删除”?

    我需要一些简单的字符串加密 所以我编写了以下代码 有很多 灵感 来自here http www codeproject com KB security DotNetCrypto aspx create and initialize a cr
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • 如何排列表格中的项目 - MVC3 视图 (Index.cshtml)

    我想使用 ASP NET MVC3 显示特定类型食品样本中存在的不同类型维生素的含量 如何在我的视图 Index cshtml 中显示它 an example 这些是我的代码 table tr th th foreach var m in
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • 通过等待任务或访问其 Exception 属性都没有观察到任务的异常

    这些是我的任务 我应该如何修改它们以防止出现此错误 我检查了其他类似的线程 但我正在使用等待并继续 那么这个错误是怎么发生的呢 通过等待任务或访问其 Exception 属性都没有观察到任务的异常 结果 未观察到的异常被终结器线程重新抛出
  • 过期时自动重新填充缓存

    我当前缓存方法调用的结果 缓存代码遵循标准模式 如果存在 则使用缓存中的项目 否则计算结果 在返回之前将其缓存以供将来调用 我想保护客户端代码免受缓存未命中的影响 例如 当项目过期时 我正在考虑生成一个线程来等待缓存对象的生命周期 然后运行
  • 无法使用 Ninject 将依赖项注入到从 Angular 服务调用的 ASP.NET Web API 控制器中

    我将 Ninject 与 ASP NET MVC 4 一起使用 我正在使用存储库 并希望进行构造函数注入以将存储库传递给其中一个控制器 这是实现 StatTracker 接口的上下文对象 EntityFramework public cla
  • 为什么我使用google'smtp'无法发送电子邮件?

    我有以下程序使用 smtp gmail com 587 发送电子邮件 namespace TestMailServer class Program static void Main string args MailMessage mail
  • 热重载时调用方法

    我正在使用 Visual Studio 2022 和 C 制作游戏 我想知道当您热重新加载应用程序 当它正在运行时 时是否可以触发一些代码 我基本上有 2 个名为 UnloadLevel 和 LoadLevel 的方法 我想在热重载时执行它
  • 从类模板参数为 asm 生成唯一的字符串文字

    我有一个非常特殊的情况 我需要为类模板中声明的变量生成唯一的汇编程序名称 我需要该名称对于类模板的每个实例都是唯一的 并且我需要将其传递给asm关键字 see here https gcc gnu org onlinedocs gcc 12
  • 如何确定母版页中正在显示哪个子页?

    我正在母版页上编写代码 我需要知道正在显示哪个子 内容 页面 我怎样才能以编程方式做到这一点 我用这个 string pageName this ContentPlaceHolder1 Page GetType FullName 它以 AS

随机推荐

  • Windows Phone 7 按钮“边框”

    默认情况下 WP7 按钮被 5 像素左右的黑色空间包围 我想删除这个 但我尝试将 Margin BorderThickness Padding 属性设置为 Thinkness 为零 但这似乎对这个神秘的空间没有任何影响 任何线索这个空间到底
  • 如何子类化 WPF 的 TreeViewItem 并在 treevview 中使用它

    我创建了一个简单的依赖属性 我想将其附加到 TreeViewitem 我已经为其他控件 例如按钮 做了类似的事情 但无法弄清楚如何在树视图中使用 TreeViewItem 而不丢失我定义的样式 通过下面的代码 我得到 用于类型 ErrorT
  • 并发写入文件

    在go中 如何控制对文本文件的并发写入 我问这个问题是因为我将有多个 goroutine 使用相同的文件处理程序写入文本文件 我写了这段代码来尝试看看会发生什么 但我不确定我是否做得 正确 package main import os sy
  • iOS 中隐式动画具体什么时候发生?

    每个人和每本书都声称 CALayer 中存在隐式动画 然而 到目前为止 每次我想验证这一点时 我都会以硬性捕捉到设定值告终 根本没有动画 这是一个项目中没有发生任何其他事情的示例 我所做的就是创建一个视图 然后获取它的 CALayer 实例
  • 按照 Matlab 中出现的顺序读取文件夹中的所有文本文件

    我目前有 20 个文本文件 命名从 file1 到 file20 我正在使用 matlab 将它们读入 filePattern fullfile myFolder txt dataFiles dir filePattern for k 1
  • 使用 Typescript 在 Material-UI 中的 createMuiTheme 中向背景属性添加属性

    我正在尝试在 createMuiTheme 中添加一个新属性 但 Typescript 不让我这样做 我按照这里的说明进行操作 https next material ui com guides typescript customizati
  • 使用 Google reCaptcha 总是显示“in Correct-captcha-sol”

    我正在尝试在我的网站上使用 Google reCaptcha 在学习了几个教程后 我在 HTML 页面上使用如下 section class row div class col full div section
  • 如何将 @JsonSnakeCase 设置为 Dropwizard 中的默认配置

    我将如何配置 Jackson 在 dropwizard 中使用蛇形案例 而不是将 JsonSnakeCase 放在每个类中 最后我能够找到答案 只需添加以下配置 environment getObjectMapperFactory setP
  • 如何使用 Swift 刷新我的应用程序中的 Google 地图?

    我制作了一个选项卡栏应用程序 其中一个选项卡 MapTab 由 GoogleMap 组成 而另一个选项卡 ImageTab 则保存所有图像 现在 当图像保存在 ImageTab 中时 它会以标记的形式显示在 MapTab 上 现在我的问题是
  • NumPy 中的 ndarray 和 array 有什么区别?

    有什么区别ndarray https numpy org doc stable reference generated numpy ndarray html and array https numpy org doc stable refe
  • Xamarin 方向传感器矢量角

    我在用着Xamarin Essentials OrientationSensor在我的项目中 我无法解释QuaternionAPI 为我提供了新的读物 问题描述 Here s a figure describing my problem 我
  • 在 Ubuntu 11.04 中禁用堆栈崩溃保护

    我在 2007 年 MacBook 上运行 32 位 Ubuntu 11 04 并且刚刚开始了解缓冲区溢出漏洞 我正在尝试运行书中的示例程序 但 Ubuntu 的安全措施使我无法成功执行缓冲区溢出 这是我尝试运行的代码 include
  • Flutter - 删除滑块中的默认填充

    我想知道如何删除默认填充Flutter Slider 电流输出是这样的 默认填充滑块的形状清晰可见 这是我的代码 Positioned child Align alignment Alignment bottomLeft child Sli
  • PyCharm 5 找不到 Django 1.9 模板

    当我使用 PyCharm 5 0 3 调试我的应用程序时 我想在模板文件 Django 1 9 中插入一些断点 但是 当我在 PyCharm 调试模式下运行应用程序时 它会在处理第一个请求后立即打印以下警告 警告 模板路径不可用 请在 se
  • Linq:存储为文本时按日期排序

    我需要按日期排序 但日期以文本形式存储在数据库中 我正在使用 Linq to 实体来执行查询 根据数据库的设计方式 将该列更改为日期列是不可行的 因为该列中有许多不同的数据类型 有一个名为的鉴别器列type所以我会知道特定行是什么类型 您可
  • 使用WebSocket上传大文件

    我正在尝试使用 WebSocket API 上传大文件 至少 500MB 最好达到几 GB 问题是我不知道如何编写 发送文件的这一部分 释放所使用的资源 然后重复 我希望我可以避免使用 Flash Silverlight 之类的东西 目前
  • 在新列中获取具有相似地址的 id

    我有一个数据帧 我从中处理一些列 以获取每个客户 ID 的地址与每个其他客户 ID 的地址的匹配百分比 如果某些地址与其他地址的匹配百分比高于 80 那么我想在新列中收集其相应的客户 ID 我编写了代码 在其中获取元组列表 其中每个元组中都
  • $root 和 $parent 有什么区别?

    我正在学习 KnockoutJS 但我不明白两者之间的区别 root and parent用法 请参见这个jsfiddle http jsfiddle net supercool 2gt4K 27 或下面的代码 div data Value
  • 在家学习共享点[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有没有可以安装并用于家庭学习目的的 sharepoint 家庭 版本 Thanks Microsoft 预配置的 Sharepoint 2007 安装
  • 模拟实体框架核心上下文

    我尝试测试我的应用程序 因此我需要模拟我的 EF 上下文 我的代码似乎没问题 但有以下异常 System ArgumentNullException 值不能为空 参数名称 来源 这是我的测试方法 var options new DbCont