我什么时候应该使用 Moq 的 .As 方法?

2023-12-05

我们到底什么时候需要使用.AsMoq提供的方法?

来自快速入门文档:

// implementing multiple interfaces in mock
var foo = new Mock<IFoo>();
var disposableFoo = foo.As<IDisposable>();
// now the IFoo mock also implements IDisposable :)
disposableFoo.Setup(df => df.Dispose());

但我只是不明白为什么我们要这样做。你能给我一个实际的例子吗?


您可以使用As当您需要测试实现的对象时的方法multiple接口。
In this示例中,如果输入对象也实现 IDisposable,则测试的代码将具有特定行为。像这样的东西:

public void Execute(IFoo input)
{
    // do process...

    IDisposable disposable = input as IDisposable;
    if (disposable != null)
    {
        disposable.Dispose();
    }
}

类的实现:

public class ConcreteFoo: IFoo, IDisposable
{
    ...
}

EDIT:

所需起订量的配置:

var foo = new Mock<IFoo>(); 
var disposableFoo = foo.As<IDisposable>(); 
disposableFoo.Setup(df => df.Dispose());

// Verify whether the Dispose() method was called
// That's true only if we use the As method from Moq.
testedClass.Execute(disposableFoo);
disposableFoo.Verify(m => m.Dispose());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我什么时候应该使用 Moq 的 .As 方法? 的相关文章

  • 如何使用 saxon 将文档类型参数传递给 xslt?

    对于发送原子数据类型将使用类似 transformer SetParameter new QName customXml new XdmAtomicValue true 如何将 XML Node 作为参数从 C 传递给 XSLT 你能帮我么
  • ASP .NET MVC 5 - 客户地址一对一关系

    我在这里查看了论坛 实际上发现了一些类似的问题 但不是相同的问题 类似的解决方案没有给我正确的答案 我正在使用实体框架和代码优先方法来处理 ASP NET MVC 5 我想建立客户 gt 地址一对一关系的模型 我建模的是 客户等级 publ
  • 限制纬度和经度值的模数

    我有代表纬度和经度的双精度数 我可以轻松地将经度限制为 180 0 180 0 具有以下功能 double limitLon double lon return fmod lon 180 0 360 0 180 0 这是有效的 因为一端是排
  • C# 动态 Linq 变量Where 子句

    我正在按照 Scott Gu 的文章创建动态 LINQhttp weblogs asp net scottgu archive 2008 01 07 dynamic linq part 1 using the linq dynamic qu
  • 堆栈独立的C/C++蓝牙API?

    我想知道是否有适用于 Windows XP Vista 7 x86 和 x64 的堆栈独立 C C 蓝牙 api 我的目标是创建连接并通过蓝牙发送 接收一些时间关键的数据 我的研究给了我以下选择以及这项任务的缺点 用于蓝牙的 Windows
  • 实体框架 5 不清除导航属性

    我在 Entity Framework 5 中遇到了这个奇怪的问题 我在其中一个实体中有一个导航属性 我想将其设置为null 但由于某种原因 该属性只有在我第二次调用该属性时才会被清除 using var db new Entities v
  • 为什么 CMake 不通过在定义该变量之前创建的 CMAKE_CXX_STANDARD 将语言标准编译标志添加到目标?

    我在用着cmake version 3 22 1 and c Ubuntu 11 3 0 1ubuntu1 22 04 11 3 0 以及非常简约的CMakeLists txt 我无法让 CMAKE 使用 C 20 Setting set
  • 使用 microsoft word.interop 删除 Word 文档中的空白页

    我创建了一个Word文档 它使用以下命令生成动态内容词互操作 它有一些分页符之间使用 我面临的问题是 此分页符会创建我不想向用户显示的空白页面 在某些情况下 我需要在那里添加这些分页符以维护页面布局 因此我无法考虑删除这些分页符 但我想要的
  • C# 列表框 ObservableCollection

    我正在尝试使用 ListBox DataSource ObservableCollection 但是我不知道如何在 OC 更新时让列表框自动更新 我可以在 OC 上挂接 CollectionChanged 事件 但是我需要对列表框执行什么操
  • 如何检查是否发生溢出? [复制]

    这个问题在这里已经有答案了 可能的重复 检测 C C 中整数溢出的最佳方法 https stackoverflow com questions 199333 best way to detect integer overflow in c
  • 那里有更好的 DateTime.Parse 吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道有一个库 付费或免费 能够处理比 DateTime Parse 使用的更常见的日期时间格式 能够
  • 为什么 C# 编译的正则表达式比等效的字符串方法更快?

    每次我必须对字符串执行简单的包含或替换操作 其中我正在搜索的术语是固定值 时 我发现如果我获取示例输入并对其进行一些分析 则使用编译的正则表达式是几乎 总是比使用 String 类中的等效方法更快 我尝试过比较多种方法 hs是要搜索的 干草
  • XPath 选择具有特定属性值的元素?

    我在使用 XPath 选择节点时遇到问题 我将展示一个示例 由于实际数据量很大 xml 文件被缩短了 这是 XML 的子集
  • Facebook Graph API“/userid/feed”返回空白

    我正在使用 Facebook C SDK 但似乎无法使用 Graph API 获取反馈数据 我已从用户那里获得了以下扩展权限 范围 离线访问 publish stream publish checkins create event read
  • Cuda:最小二乘求解,速度较差

    最近 我使用Cuda编写了一个名为 正交匹配追踪 的算法 在我丑陋的 Cuda 代码中 整个迭代需要 60 秒 而 Eigen lib 只需 3 秒 在我的代码中 矩阵 A 是 640 1024 y 是 640 1 在每一步中 我从 A 中
  • C中的pipe()和fork()

    我需要创建两个子进程 一个子进程需要运行命令 ls al 并将其输出重定向到下一个子进程的输入 而下一个子进程又将对其输入数据运行命令 sort r n k 5 最后 父进程需要读取该数据 已排序的数据 并将其显示在终端中 终端中的最终结果
  • Python 中的 C 指针算术

    我正在尝试将一个简单的 C 程序转换为 Python 但由于我对 C 和 Python 都一无所知 这对我来说很困难 我被 C 指针困住了 有一个函数采用 unsigned long int 指针并将其值添加到 while 循环中的某些变量
  • 访问 Visual Studio 扩展中的当前代码窗格

    我正在编写一个 Visual Studio 2010 扩展 在代码视图中带有右键单击菜单 我希望能够从菜单项事件处理程序检查当前代码 但无法在对象模型中找到执行此操作的位置 如何在 Visual Studio 扩展中访问当前窗口中的代码 E
  • Android NDK - 仅用 C/C++ 编写

    有没有一种可能的方法可以使用 C C 编写整个 NDK 应用程序 而无需像 hello jni 示例项目 HelloJni java 中那样的 Java 入门 类 以某种方式创建一个 HelloJni c 来执行相同的操作 从 Androi
  • GetActiveObject() 与 GetObject() -- MK_E_UNAVAILABLE 错误

    All 我在将一些 VBA 代码转换为 C 时遇到一些问题 我们有一个充当本地 COM 服务器的第 3 方应用程序 在我们使用的VBA代码中获取对象 获取对现有对象的引用 e g Set appHandle GetObject ProgId

随机推荐

  • Python在方法内使用tkinter显示变量

    我刚刚编写的程序是我了解 Tkinter 工作原理的游乐场 我的问题是如何将变量 timelabel 显示为标签 我已经制作了一个名为 时间刷新 的标签 但它没有显示 我知道 DigitalClock 类的编写效率不高 我是新来的 def
  • 在 C 或 C++ 中以编程方式删除非空目录

    如何在C或C 中删除非空目录 有什么功能吗 rmdir 只删除空目录 请提供一种不使用任何外部库的方法 还告诉我如何用 C 或 C 删除文件 您想要编写一个函数 递归函数是最简单的 但很容易耗尽深层目录上的堆栈空间 来枚举目录的子目录 如果
  • 具有扩展密钥用法的证书仅适用于 Firefox

    我尝试为多个域的服务器生成自签名证书 我在 v3 req 扩展中使用了 openssl 我使用此命令行生成具有多个域和扩展密钥用法的证书 openssl x509 req days 3650 in san domain com csr si
  • atexit 函数的目的是什么?

    我知道函数的地址何时传递给atexit功能 该函数被执行 include
  • 如何在 aws emr 上使用 -libjars?

    Stack Overflow 上有类似的问题 但没有一个回答这个问题 当按照以下链接时出现问题http grepalex com 2013 02 25 hadoop libjars 我们需要使用 export HADOOP CLASSPAT
  • 是否有 OutputDebugString 的 Unicode 替代品?

    OutputDebugString 是原生 ASCII 这意味着它在调用 ASCII 版本之前将输入的 Unicode 字符串转换为本地字符串OutputDebugStringA 有没有什么替代方案OutputDebugString 哪个支
  • .htaccess RewriteRule 有效,但地址栏中的 URL 没有变化?

    我一直在抓着头发试图解决这个问题 但没有任何效果 我有一个网页位于mysite com test php我想做一个简单的 URL 重写并将其更改为mysite com testRewrite 实现这一点的代码应该是 Options Foll
  • 如何将包导入 Scala REPL?

    如何将包导入 Scala 的 REPL 中 我正在尝试导入这个名为 funsets 的包 它有一个名为 FunSets 的对象 我尝试了几种变体import funsets and import funsets 等等 但它仍然没有导入包中的
  • Android后台服务和警报

    最近遇到一个问题Android 4 4杀死了我的应用程序Service and AlarmManager当设备进入睡眠模式时 START STICKY参数没有帮助 我尝试了很多东西 但没有任何效果符合我的需要 在我的任务管理器应用程序中 我
  • 在 OCaml 中打破循环

    我经常需要在 OCaml 中打破循环 至少有两种方法 by exception try for i 0 to 100 do if cond then raise BreakLoop done with BreakLoop gt by whi
  • SQL 按字母顺序排序,小于 10 的数字不带前导零

    是否可以按以下方式在 mySQL 中按字母顺序排序 A1 A2 A3 A5 A10 A11 A20 A23 A24 不幸的是 我收到的订单如下所示 请注意 A10 之前的任何数字如何没有组合在一起 A1 A10 A11 A12A2 A20
  • 由于 AccessibilityNodeInfo getChild 导致出现大量 ANR

    收到大量 ANR 报告 main prio 5 tid 1 可运行 组 主 sCount 0 dsCount 0 标志 0 obj 0x72e8a568 自我 0xe65da000 sysTid 20592 好 0 cgrp 默认调度 0
  • 对 Intellij 如何编译事物和处理资源感到困惑

    我对 Visual Studio 的 IntelliJ 非常陌生 而且我通常对资源文件在 IntelliJ 项目中的工作方式感到非常困惑 我阅读了一些有关将资源添加到类路径以及 IntelliJ 文档的问题和解答 但仍然感到困惑 我还有几个
  • 在 R Markdown 中使用 pandoc 和 bookdown 删除图标题中的冒号

    我正在更改 R Markdown 中图形标题的字体并使用bookdown和 pandoc 这样做 我的问题与以下问题密切相关 如何更改bookdown中的图形标题格式 我能够获得正确的图形编号 并且能够更改标题的 图 1 部分的格式 但是
  • 是否可以从 adf 连接到 databricks deltalake 表

    我正在寻找一种能够从 ADF 和其他 Azure 服务 如数据目录 连接到 Databricks deltalake 表的方法 我没有看到 ADF 数据源中列出的 databricks 数据存储 关于类似的问题 是否可以从 Azure 数据
  • 如何从jni端调用java方法?

    我在 jni 端完成了一些 C 代码函数 并且所有工作正常 public native String getMessage 函数将字符串从 jni 端返回到 java 端 它工作正常 所有其他 jni 代码也工作正常 但问题是如何在 jni
  • 使用 Python 刷新 Excel 外部数据

    我有一个 Excel 文件 我在其上运行 Python 脚本 Excel 文件具有需要在运行 Python 脚本之前刷新的外部数据连接 我指的功能在这里 我使用的是 Python 2 7 并且依靠 Pandas 进行大部分 Excel 数据
  • 如何重命名 DataFrame 中与嵌套 JSON 对应的字段

    我正在尝试使用以下方法处理移动应用程序中收到的 JSON 事件 如点击等 spark 1 5 2 有多个应用程序版本 并且事件的结构因版本而异 假设版本 1 具有以下结构 timestamp ev app appName XYZ appVe
  • 基于数据集的SSRS多值参数过滤器

    假设我在 SSRS 中有一个名为 DataSet1 的数据集 如下所示 CREATE TABLE data ID int Value int UserID varchar 2 INSERT INTO data VALUES 1 1000 A
  • 我什么时候应该使用 Moq 的 .As 方法?

    我们到底什么时候需要使用 AsMoq提供的方法 来自快速入门文档 implementing multiple interfaces in mock var foo new Mock