如何使用最小起订量模拟将项目添加到存储库或 DbContext?

2024-03-21

我见过的对存储库使用最小起订量的示例仅展示了如何模拟返回的内容。我有一个有点奇怪的要求:当执行查询时,如果条件存在,则应将某个项目添加到存储库中。我想知道如何在不查询数据库的情况下测试它。我知道如何模拟现有条件,但是如何设置模拟以便可以测试是否添加了特定项目?


尝试在内存存储库中使用 fake 而不是最小起订量,例如所有实体的通用通用存储库:

public interface IInMemoryRepository<T> where T : class
{
    IQueryable<T> GetAll();
    void Create(T item);
    void Update(T item);
    T GetItem(Expression<Func<T, bool>> expression);
    void Delete(T item);
}

public class InMemoryRepository<T> : IInMemoryRepository<T> where T : class
{
    private int _incrementer = 0;
    public Dictionary<int, T> List = new Dictionary<int, T>();

    public IQueryable<T> GetAll()
    {
        return List.Select(x => x.Value).AsQueryable();
    }

    public void Create(T item)
    {
        _incrementer++;
        item.GetType().GetProperties().First(p => p.Name == "Id").SetValue(item, _incrementer, null);
        List.Add(_incrementer, item);
    }

    public void Update(T item)
    {
        var key = (int)item.GetType().GetProperties().First(p => p.Name == "Id").GetValue(item, null);
        List[key] = item;
    }

    public T GetItem(Expression<Func<T, bool>> expression)
    {
        return List.Select(x => x.Value).SingleOrDefault(expression.Compile());
    }

    public void Delete(T item)
    {
        var key = (int)item.GetType().GetProperties().First(p => p.Name == "Id").GetValue(item, null);
        List.Remove(key);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用最小起订量模拟将项目添加到存储库或 DbContext? 的相关文章

  • EF Core - 在运行时向数据库添加新表

    我有一个 asp net core 项目 需要能够在运行时支持插件 因此 我需要根据插入的内容生成数据库表 每个插件都分为单独的项目 并且它们具有他们自己的 DbContext 类 要使用的插件在编译时是未知的 只有在运行时才知道 现在在
  • WPF TreeView 绑定[重复]

    这个问题在这里已经有答案了 我有一个带有父级和子级属性的课程 ADO NET 实体框架分层页面类 http img148 imageshack us img148 6802 edmxxe8 gif http img148 imageshac
  • 如何获取Azure DevOps Pipelines中变量的单元测试结果?

    我在 Azure DevOps 中有一个构建管道 并且正在使用 NET Core 任务来应用单元测试 我需要获取变量中单元测试的结果 例如 如果有 10 个测试用例 其中两个失败 我需要得到如下信息 failedTestCases 2 su
  • 使用更新的值重新加载实体框架上下文中的对象

    我有一个从数据库中提取的 EF 对象 然后 我通过使用另一个函数调用来更新数据库中的相应行DBContext 在此更新之后 我想使用更新后的内容重新加载对象的内容 但是 EF 上下文似乎缓存了这些内容 这是代码示例 我删除了一些不相关的内容
  • QUnit 不会运行测试

    我刚刚开始使用 QUnit 并遇到问题 我目前正在使用 TypeScript 它是一个 JavaScript 编译器 我在与我的主要课程结构平行的课程中进行测试 在每个类中 我都有一个名为 runTests 的函数 为了执行这些测试 我循环
  • 在unittest.main()之后执行命令

    我从另一个 Python 脚本调用以下脚本 测试 py 日志文件 它应该运行测试并将结果保存在日志文件中 但由于某种原因 之后的命令unittest main testRunner runner 没有被执行 我什至不确定文件写入后是否会关闭
  • 在 PyCharm 中禁用 Pytest

    如果我有一个以 test 开头的文件 PyCharm 会尝试使用 PyTest 运行该文件 我想正常运行它 作为常规 Python 脚本 我怎样才能做到这一点 Edit请参阅下面 Milo 的回答 如果由于某种原因这对您不起作用 正如 A
  • .NET 中有什么方法可以以编程方式侦听 HTTP 流量吗?

    我正在使用浏览器自动化来测试网站 但我需要验证来自浏览器的 HTTP 请求 即图像 外部脚本 XmlHttpRequest 对象 有没有一种方法可以以编程方式实例化代理以供浏览器使用以查看其发送的内容 我已经在使用 Fiddler 来监视流
  • 如何为 Rust 测试中的所有测试函数创建一个具有作用域/生命周期的变量?

    我有一个在深入测试细节之前初始化变量的测试 我想使用相同的变量进行第二次测试 而不是重复初始化代码 test fn test one let root Path new data the rest of the test test fn t
  • 使用 linq 2 实体检查 where 子句的两个条件

    嗨 我有一个名为 产品 的表 其中包含列 product id prodcut name prodcut price values like 1200 2000 3000 100 prodcut desc category id 1 2 3
  • 已删除的测试仍保留在 Xcode 测试导航器中

    我最近从我的项目中删除了一些旧的测试类并删除了这些文件 正如预期的那样 文件被移至垃圾箱并在 git 中显示为已删除 不幸的是 它们定义的测试类和测试用例继续出现在测试导航器中 我尝试过常见的方法 例如清理和重建 以及退出并重新打开 Xco
  • .NET 实体框架核心

    我已经阅读了过去两年中发布的几乎所有有关 EF 的其他问题 我下载其他软件包没有任何问题 只是实体框架不会为我安装 我什至尝试安装最新版本的 Nuget 并在我的项目目录中使用它的工具来恢复包 之后 我将这一行添加到我的 csproj 中
  • 有没有更好的方法使用 MVC 4 和 Entity Framework 5 添加子记录?

    我正在学习 MVC 并结合实体框架处理其无状态性质 我的问题是 有没有更优雅的方式来处理下面的场景 我有两个 POCO 实体 public class Contest public long ID get set public IColle
  • 如何使用 Entity Framework Code First 在两个实体之间建立多个一对多关系

    下面是保存关系数据库记录的简单方法 该方法运行得很好 我对一种情况有疑问 在此之前 我需要知道如果数据库复杂性增加 我所采用的方法会遇到什么困难 还有更好 高效但简单的方法吗 一对一 tb student store student det
  • 如何模拟从抽象类继承的受保护子类方法?

    如何使用 Mockito 或 PowerMock 模拟由子类实现但从抽象超类继承的受保护方法 换句话说 我想在模拟 doSomethingElse 的同时测试 doSomething 方法 抽象超类 public abstract clas
  • ExpectedFailure 被计为错误而不是通过

    我在用着expectedFailure因为有一个我想记录的错误 我现在无法修复 但想将来再回来解决 我的理解expectedFailure是它会将测试计为通过 但在摘要中表示预期失败的数量为 x 类似于它如何处理跳过的 tets 但是 当我
  • 测试弱引用

    在 Java 中测试弱引用的正确方法是什么 我最初的想法是执行以下操作 public class WeakReferenceTest public class Target private String value public Targe
  • 实体框架 - SQL Server 2005 - IIS 服务器日期时间问题

    我正在使用 MVC3 和实体框架 在我的应用程序中 我需要通过 EF 调用 SQL Server 2005 中的存储过程来根据以下内容搜索一些数据datetime传递的参数 在当地环境中一切似乎都运行良好 但是将其托管到 IIS 后 我在尝
  • EF4如何在多对多关系中公开联接表

    假设我有以下表格 Essence EssenceSet 和 Essence2EssenceSet 其中 Essence2EssenceSet 仅保存前 2 个表的 ID 以形成 M M 关系 在 EF 中 由于 Essence2Essenc
  • 使用实体框架时是否应该使用部分类作为业务层?

    我正在开发一个使用实体框架的项目 使用EF生成的类的部分类作为业务层可以吗 我开始认为这就是 EF 的用途 我尝试使用 DTO 模式 很快意识到我只是创建了一堆映射类 这重复了我的工作 而且还导致更多的维护工作和额外的层 我想使用自我跟踪实

随机推荐

  • Flexdashboard多属性页面

    我正在学习 flexdashboard 并为未来的应用程序尝试一些不同的布局 但我无法为同一页面分配不同的属性 我希望第二页有一个行布局 列在导航栏 A 中 并在标题前面有一个图标 当我这样写时 data orientation rows
  • 在SSMS中将存储过程结果集导出到Excel

    我正在使用 SSMS 并尝试将存储过程的结果导出到新的 Excel 文件 SP 接受 int 参数 但我找不到在查询中调用它的方法 最新努力 EXEC sp makewebtask outputfile C Users me Documen
  • PHP手机浏览器检测?

    我需要一种在服务器端检测移动浏览器的方法 我想要一种不需要我做太多设置和维护的方法 但仍然可以为我提供 至少 Android Mobile Safari 和 Blackberry 浏览器以及 Opera 等替代浏览器的准确检测 我希望至少有
  • 使 jqGrid 可移动

    看起来 jqGrid 是基于 jQuery 对话框的 是否有可能使其可移动 像对话框一样 我已经能够将它放在对话框中 但有两个标题栏等看起来很奇怪 我 认为 可以向其中添加必要的类以使其可移动 但我对 jQuery 和 jqGrid 仍然相
  • Firebase Firestore JavaScript:查找未设置字段的文档

    在 Firebase Firestore 中 我可以查询未设置特定字段的文档吗 我知道如果我这样做 collectionReference where requires null 不会做我想做的事null是根本不同的 undefined驱动
  • 使用 JavaScript 创建 Powerpoint

    JavaScript 无法在客户端文件系统上本地创建文件 但是 我想知道是否可以通过某种 JSON 在网页 div 或 iframe 中以某种方式创建 Powerpoint MIME 然后让 UserAgent 找出它是 Powerpoin
  • iOS Safari HTML 表单下一个/上一个按钮 - 它们如何工作?

    免责声明 我正在使用 JQuery Mobile 我有一堆带有不同表单的页面 但其中一些页面在按下下一个 上一个按钮时似乎表现出不同的行为 所有表单都设置了选项卡索引 Form 1 工作完美 只是它跳过了 JQuery Mobile 翻转开
  • 在 Visual Studio 2008 中合并时强制比较文件

    目前 当我在 Visual Studio 2008 中右键单击 gt 合并特定文件时 它会尝试 并且通常会成功 自动将该文件合并到我指定的目标 如何强制 VS 始终允许我在合并工具中手动比较和合并文件 我应该提到我的源代码管理是 TFS 这
  • 红宝石脱轨

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 有时感觉我的公司是世界上唯一一家使用Ruby而不使用Ruby on Rails的公司 以至于R
  • 如何从 perl6 调用 Java 方法

    use java util zip CRC32 from
  • 在 Google 应用引擎上部署失败

    我有一个java应用程序 spring mvc jpa 我正在尝试将其部署在谷歌应用程序引擎上 由于某种原因 部署完成后出现以下错误 20 扫描本地磁盘上的文件 25 正在启动更新 错误详情 2011 年 2 月 26 日上午 10 43
  • 我们可以优化代码来降低功耗吗?

    有没有什么技术可以优化代码以确保更低的功耗 架构是ARM 语言是C 来自 ARM 技术参考网站 ARM11 MPCore 的特性 提高能源效率的处理器 效率包括 准确的分支和子程序返回预测 减少数量 错误的指令获取和 解码操作 使用物理寻址
  • 将 pandas DataFrame 列扩展为多行

    如果我有一个DataFrame这样 pd DataFrame name John days 1 3 5 7 给出这个结构 days name 0 1 3 5 7 John 如何将其扩展为以下内容 days name 0 1 John 1 3
  • 在存储过程中设置结果表名称

    返回多个结果的存储过程 CREATE PROCEDURE dbo GetMultipleTable AS BEGIN if exists select something from somewhere where somecondition
  • 在Java中生成泊松到达

    我想在Java中创建一个函数 在给定平均到达率 lambda 和平均服务率 mu 的情况下生成泊松到达 在我的示例中 每天有 2 2 个请求 换句话说 每天有 2 2 个到达 平均服务时间为 108 小时 考虑到我的程序在 t 0 分钟开始
  • 如何使 C# Windows 运行时组件类型相等?

    我正在用 C 编写一个 Windows 运行时组件 我想在我的一些类型中实现 IEquatable 接口 我不需要向组件的使用者公开 Equals 方法 我只是希望我的单元测试能够在实例之间进行比较 不允许实现 IEquatable 因为它
  • “As Dictionary”和“As Scripting.Dictionary”是否等效(对于 VBA 早期绑定)?

    使用早期绑定和 Microsoft 脚本运行时库创建字典对象时 同一事物似乎有 2 个等效的类型名称 Dim dict as Dictionary Set dict New Dictionary and Dim dict as Script
  • 性能:具有多次调用的全局和局部声明

    为什么R中无论在哪里声明函数 两者性能几乎相同 library microbenchmark f1 lt function lapply 1 100000 function x fun lt function 1 10000 fun f2
  • 合并两个表并为 R 中的每个表添加标题

    我想并排显示两个回归分析的结果 比如说逻辑回归和 COX 回归 变量以行形式呈现 p OR HR 和置信区间的相应数据以列形式呈现 因此 列名称不匹配 OR 位于左侧 HR 位于右侧 我尝试了 cbind 但遇到了以下问题 1 如果由于变量
  • 如何使用最小起订量模拟将项目添加到存储库或 DbContext?

    我见过的对存储库使用最小起订量的示例仅展示了如何模拟返回的内容 我有一个有点奇怪的要求 当执行查询时 如果条件存在 则应将某个项目添加到存储库中 我想知道如何在不查询数据库的情况下测试它 我知道如何模拟现有条件 但是如何设置模拟以便可以测试