Moq Expect On IRepository 传递表达式

2023-11-26

我正在使用此代码来验证我正在测试的方法的行为:

    _repository.Expect(f => f.FindAll(t => t.STATUS_CD == "A"))
    .Returns(new List<JSOFile>())
    .AtMostOnce()
    .Verifiable();

_repository 定义为:

private Mock<IRepository<JSOFile>> _repository;

当我的测试运行时,我得到这个异常:

不支持表达式 t => (t.STATUS_CD = "A")。

如果我无法将表达式传递到 Expect 方法中,有人可以告诉我如何测试此行为吗?

Thanks!!


这是一种有点作弊的方式。我对表达式执行 .ToString() 并比较它们。这意味着您必须在被测试的类中以相同的方式编写 lambda。如果你愿意,你可以在此时进行一些解析

    [Test]
    public void MoqTests()
    {
        var mockedRepo = new Mock<IRepository<Meeting>>();
        mockedRepo.Setup(r => r.FindWhere(MatchLambda<Meeting>(m => m.ID == 500))).Returns(new List<Meeting>());
        Assert.IsNull(mockedRepo.Object.FindWhere(m => m.ID == 400));
        Assert.AreEqual(0, mockedRepo.Object.FindWhere(m => m.ID == 500).Count);
    }

    //I broke this out into a helper as its a bit ugly
    Expression<Func<Meeting, bool>> MatchLambda<T>(Expression<Func<Meeting, bool>> exp)
    {
        return It.Is<Expression<Func<Meeting, bool>>>(e => e.ToString() == exp.ToString());
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Moq Expect On IRepository 传递表达式 的相关文章

随机推荐

  • before_filter 与 devise

    我正在使用 Devise 的内置功能before filter authenticate user 如果用户未通过之前过滤器 尝试在注销时执行操作 我想在应用程序帮助程序中调用我自己的自定义方法 我可以如何以及在哪里执行此操作 我会在过滤器
  • 在 Chrome 扩展程序中重定向 URL

    访问给定 URL 时 如何在扩展程序中重定向 chrome 例如 当我访问http yahoo com 我希望它重定向到http google com NOTE 这个问题的前一个版本询问是否有任何 Google Chrome 扩展程序可以在
  • Git - 重复提交问题

    我不小心在我的存储库中创建了 未知 的提交 并决定尝试从here git filter branch commit filter if GIT COMMITTER NAME unknown then GIT COMMITTER NAME G
  • Delphi找不到System.dcu;默认路径设置应该是什么?

    每当我尝试编译某些内容时 都会出现此错误 F1027 未找到单元 System pas 或二进制等效项 dcu 安装组件后得到它 删除它 重新安装 RAD studio 但仍然一样 为了修复它 我需要库路径 and 浏览路径 请任何人发布你
  • F# 在实际处理 int64 时假设 int

    正在经历欧拉计划在尝试学习 F 时 我在编写解决方案时偶然发现了一个似乎是类型推断的问题问题3 这是我写的 let rec findLargestPrimeFactor p n if n 1 then p else if n p 0 the
  • 缓存 JNI 对象和线程安全(在 Android 中)

    我正在编写一个带有本机线程 pthreads 的 C 应用程序 我需要调用一些 Java 方法等 我不确定哪些 JNI 对象可以安全地缓存 即存储在我的 C 对象中以供以后使用 可能 可能由不同的线程 我确实知道 如果我的类的方法可以由不同
  • 多个DbContext、多个Database.SetInitializer

    我创建了两个 DbContext 一个用于应用程序配置 第二个用于日志记录 原因是 我想在日志记录数据库上设置最大大小 这样它就不会耗尽所有可用磁盘空间并阻止其他数据库工作 在我的 global asax cs 文件中 我有以下内容 pro
  • 即使我在 Firebase 控制台中更新了 sha1,在 Play 商店中发布 .apk 后,Firebase 电话身份验证也无法正常工作

    Firebase 电话身份验证在之后不起作用 apk即使我更新后也在Play商店发布sha1之后我在 firebase 控制台中生成了 google services json再次更新 a ndroid studio 项目中的 json 文
  • 如何在散点图中画线

    我不敢相信这是如此复杂 但我尝试并用谷歌搜索了一段时间 我只想用一些图形特征来分析我的散点图 首先 我想简单地添加一行 所以 我有几 4 个点 我想在其中添加一条线 就像这个图中一样 来源 http en wikipedia org wik
  • Chart.js 中折线图的背景颜色

    我想更改 Chart js 生成的折线图的背景颜色 似乎没有这个选项 并且文档也没有帮助 在互联网上进行了广泛的搜索 没有得到任何结果 这可能吗 我必须承认我对 HTML5 画布不太了解 所以我有点挣扎 使用 Chart js v2 1 您
  • BigDecimal Euler 的数字计算模拟 Math.exp(double a)

    有没有一种普遍接受的方法来获取 BigDecimal 中的欧拉数 我基本上想做 Math exp double a 并且我基本上想要相同的函数 但使用 BigDecimal 进行计算以防止其他计算的精度损失 我只想做 BigDecimal
  • Android - 屏幕方向重新加载活动

    我要重新问这个问题 因为有太多不好的信息 这真的令人沮丧 简而言之 当设备方向改变时 我不希望发生任何改变或发生 针对此问题给出的 2 个最流行的 解决方案 是 1 您可以通过在清单中添加 android screenOrientation
  • 如何实现文件系统和数据库的协调?

    我正在开发一个在线文件管理项目 我们将引用存储在数据库 sql server 上 将文件数据存储在文件系统上 当我们上传文件以及删除文件时 我们面临着文件系统和数据库之间的协调问题 首先 我们在数据库中创建引用或在文件系统上存储文件 问题是
  • 打印字符时会发生哪些积分促销?

    我最近读到了 unsigned char x 1 printf u x 调用未定义的行为 因为由于格式说明符 u printf 需要一个无符号整数 但我仍然想了解这个例子中发生了什么 我认为积分提升规则适用于表达式printf u x 和代
  • 当调用异步方法而不等待时会发生什么?

    我想知道如果我调用一个标记为异步而不使用等待的方法会发生什么 考虑这个例子 private int id 0 async Task Initialize var content await LoadFromDisk id await Pro
  • 如何避免 clang: No such file or directory 错误

    我正在尝试将 RPostgreSQL 安装到我的 R 实例中 我用 Anaconda 下载了 R 还下载了自制软件 当我运行 install packages RPostgreSQL 时 我收到一条错误消息 make x86 64 appl
  • 更新 Windows 后 SqlClient 错误 - “传入表格数据流 (TDS) 远程过程调用 > (RPC) 协议流不正确”

    自从将 Windows 10 更新到 1803 以来 每当我运行连接接受标量参数的表值函数的 EF 查询时 我都会开始收到此错误 消息 传入的表格数据流 TDS 远程过程调用 RPC 协议流不正确 参数2 数据类型0x00 未知 堆栈跟踪
  • 限制外键数量

    让我们看这个例子 class Team models Model name models CharField Name max length 30 class Round models Model round number models I
  • 如何将变量名称作为参数的一部分传递给批处理文件,然后使用它?

    我正在尝试运行一个接受包含变量名称的字符串的批处理文件 然后该变量将在批处理文件中使用 例如 C gt test bat user num 在批处理文件中 set num 1 This is where I need help Someho
  • Moq Expect On IRepository 传递表达式

    我正在使用此代码来验证我正在测试的方法的行为 repository Expect f gt f FindAll t gt t STATUS CD A Returns new List