单元测试 SqlFunction

2024-06-24

我有一个公开 IQueryable 的存储库和一个处理特定查询的服务,这里有一些使用 DbFunctions 的方法。为了可测试,我创建了一个带有静态元素列表的假存储库并将其注入到服务中。问题是,由于我的服务查询列表并且不使用数据库,因此我收到错误“只能从 LINQ to Entities 调用此函数。”。

有没有比创建假 DbFunctions 和 QueryProvider 更简单的测试方法?

提前致谢


我尝试实现 dateDiff 函数,它对我有用 但我们应该认为在这种情况下我们测试不同的功能 我们正在测试不是真实的行为

 private class MySqlFunctions
    {
        [DbFunction("SqlServer", "DATEDIFF")]//EF will use this function
        public int? DateDiff(string datePartArg, DateTime startDate, DateTime endDate)
        {
            var subtract = startDate.Subtract(endDate);
            switch (datePartArg)
            {
                case "d":
                    return (int?)subtract.TotalDays;
                case "s":
                    return (int?)subtract.TotalSeconds; // unit test will use this one
            }
            throw new NotSupportedException("Method supports only s or d param");
        }
    }

然后在linq代码中

var sqlFunctions = new MySqlFunctions();

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

单元测试 SqlFunction 的相关文章

随机推荐

  • Javascript 从多选选项框中获取值

    这让我发疯 这一定是我所忽视的简单而愚蠢的事情 我的表单中有一个多重选择框 我只是想获取所选的值 在我的循环中 如果我使用警报那么我就没有问题 一旦尝试连接这些值 我就会收到错误 SelBranch selected 为空或不是对象
  • 我可以在没有私钥的情况下将多个证书合并为一个吗?

    我需要在许多设备中拥有最新的证书信任存储 因此我希望能够将它们合并到证书中 然后我可以只推送该一个文件 我只想捆绑多个 CA 的公钥 但我不想添加私有文件 因为我想要将证书推送到我的所有设备 我认为这个功能被称为链 但 openssl 不会
  • 在seaborn kdeplot中设置置信度

    我对seaborn完全陌生 所以如果这是一个简单的问题 我深表歉意 但我在文档中找不到关于如何在kdeplot中控制n levels绘制的级别的描述 这是一个例子 import seaborn as sns import numpy as
  • 如何设置从自定义文件类型到程序的文件关联

    假设我创建了一个自定义文件 它实际上对应于我的程序可以读取的内容 称为 Bacon dek 我可以正常地从我的程序访问它 修改它等 只有少数问题仍然存在 也以相对正确的速度修复它们 现在 我想做的 并在完成后尝试快速修复 实际上是从 Win
  • 获取API错误处理

    我想显示来自 API 的错误消息 问题是如果我检查 我无法到达该错误response ok 它返回 Fetch 错误 而不是来自 API 的错误 如果我不使用if response ok 它从 API 返回错误 但调度成功操作 这是登录操作
  • 您可以在 clojure defrecord 中指定方法的返回类型吗?

    我已经创建了一个应用程序信息接口和一个类 但是当我查看生成的类时 所有方法的返回类型都是 Object 我可以将返回类型更改为 String 吗 文档说类型提示可以使用 defrecord 但没有给出示例 我能找到的唯一示例是类型提示字段和
  • WinSCP:校验和计算(不支持该操作。)

    我在 C WinForms 应用程序中使用 WinSCP NET 程序集 并且希望将远程目录与本地目录同步 这与 WinSCP 配合得很好 但在同步开始之前 我想检查远程和区域设置控制器是否完全不同 为此 我想使用CalculateFile
  • 当 Axios 中的 responseType 为 blob 和 VueJs 时,如何读取 http 错误? [复制]

    这个问题在这里已经有答案了 我在 VueJS 应用程序中使用 Blob responseType 和 Axios 从服务器下载文档 当响应代码为 200 时 它工作正常并下载文件 但是当出现任何 http 错误时 我在捕获错误时无法读取状态
  • Angular 10 在从不同工作区渲染组件时使用库时无法读取 null 属性“bindingStartIndex”

    我创建了一个位于我的应用程序工作区之外的 Angular Library 结果是我有两个不同的工作空间 我的第一个方法是建立我的图书馆和链接 dist与我的应用程序的文件夹 这对于 ngserve 来说效果不太好 但无论如何我在渲染我的库组
  • 如何声明字符串数组(多行)

    为什么 dlls Count返回单个元素 我尝试这样声明我的字符串数组 basePath Split Path MyInvocation MyCommand Path dlls basePath bin debug dll1 dll bas
  • Ionic2 + Angular2 - 带有离子图标星的动态速率值

    我正在尝试构建一个从 0 到 5 颗星的简单动态速率 及其中间值 如 x 5 示例 4 5 该速率从 javascript 接收值 我用 ngFor 寻找一些东西 但我不明白它是如何工作的 有人可以解释 帮助我吗 如果有帮助的话 对于 io
  • iPhone/iPod 模拟器和设备之间的差异

    自从我开始 iPhone iPod 开发以来 我发现模拟器和真实设备的反应之间存在一些差异 也许我会遇到一些其他差异 我也必须弄清楚 也许其他人还没有在这里遇到这些问题 并且可以从知识中受益 也许你知道一些你本来会遇到的问题 差异很高兴在您
  • flutter 的 Image_picker 插件在 iOS 上运行时会导致构建错误

    在 iOS 模拟器上运行 flutter 应用程序时出现此错误 Users sirapol Desktop FirstCareFrontEnd care now frontend v1 build ios Debug iphonesimul
  • .trigger 函数的回调

    我有以下代码 scheduleLink trigger click alert text 这是点击处理程序 scheduleLink bind click function loadScheduleEvent wrap tabs find
  • 嵌套函数中的局部变量

    好吧 请耐心听我说 我知道这看起来会非常复杂 但请帮助我理解发生了什么 from functools import partial class Cage object def init self animal self animal ani
  • 使用 BFS 查找 Boost BGL 图中所有可到达的顶点

    我构建了一个 boost BGL 图 using vertex t std variant
  • 禁用 dat.gui 中按钮的方法?

    我正在尝试找出一种方法来轻松禁用 启用 dat gui 中的按钮 我设置了 dat gui 来控制动画 当动画结束时 我希望禁用 播放 按钮 我尝试向按钮的 DOM 元素添加 禁用 属性 但在设置此属性后单击按钮时 我仍然看到相应的函数会触
  • 在桌面应用程序和网站之间启用单点登录

    我们有一个客户端 服务器应用程序 具有丰富的客户端前端 Net 和管理门户 Asp Net 目前 用户必须在富客户端和网站上登录 我们希望他们能够登录富客户端 但如果他们从客户端内启动网站 则不必登录该网站 我们怎样才能做到这一点 采用另一
  • ES6/Typescript 导入:在一行中导入 * 和名称

    我怎样才能把它写在 1 行上 import as Express from express import Application NextFunction Request Response from express 你的开发者丹 impor
  • 单元测试 SqlFunction

    我有一个公开 IQueryable 的存储库和一个处理特定查询的服务 这里有一些使用 DbFunctions 的方法 为了可测试 我创建了一个带有静态元素列表的假存储库并将其注入到服务中 问题是 由于我的服务查询列表并且不使用数据库 因此我