使用最小起订量的扩展方法的单元测试

2024-02-28

我正在为 azuresearch 的函数 uploaddocuments() 编写单元测试。

Unsupported expression: ... =>
....Index(It.IsAny<IndexBatch<Document>>(),
It.IsAny<SearchRequestOptions>()) Extension methods (here:
DocumentsOperationsExtensions.Index) may not be used in setup /
verification expressions.

不知道为什么它不起作用。

code:

    private static async Task uploaddocuments(ISearchIndexClient indexClient)
    {

    var actions = new IndexAction<Hotel>[]
    {

      IndexAction.Upload(
       new Hotel()
       {
           HotelId = "1",
                HotelName = "Secret Point Motel",
                Description = "The hotel is ,

                Rating = 3.6,
                Address = new Address()
                {
                    StreetAddress = "677 5th Ave",
                    City = "New York",
                    StateProvince = "NY",
                    PostalCode = "10022",
                    Country = "USA"
                }

         }
       )
    }
    var batch = IndexBatch.New(actions);
    try
    {
           indexClient.Documents.Index(batch);
    }
    catch (IndexBatchException e)
    {
          console.log(e);
    }
}

Test:

var testMock = new Mock(IDocumentsOperations)();

docOperationsMock.Setup(() => Index(It.IsAny(IndexBatch<Document))(), It.IsAny<SearchRequestOptions)())).Returns(new DocumentIndexResult());


  var mock = new Mock<ISearchIndexClient>()

            .Setup(x => x).Returns(It.IsAny(SearchIndexClient)());

             .SetupGet(a => a.Documents).Returns(It.IsAny("IDocumentsOperations")())

             .Callback(() => IndexBatch.Upload(It.IsAny(IEnumerable(dynamic))()));

            .Returns(testMock.Object);

您不能使用模拟框架直接模拟静态方法(例如扩展方法)。您可以使用一些包装器来实现相同的目的。 我们不能(默认情况下)模拟静态调用——它是一个紧密的耦合,不容易被打破。

这是一篇非常好的文章,它展示了一种为静态方法创建包装器的方法,它可以在这种情况下帮助我们:

http://adventuresdotnet.blogspot.com/2011/03/mocking-static-methods-for-unit-testing.html http://adventuresdotnet.blogspot.com/2011/03/mocking-static-methods-for-unit-testing.html

或者,您可以使用 PEX 或 MOLES 来获得相同的结果,您可以在下面的文档中进一步阅读:

https://www.microsoft.com/en-us/research/project/pex-and-moles-isolation-and-white-box-unit-testing-for-net/?from=http%3A%2F%2Fresearch .microsoft.com%2Fen-us%2Fprojects%2Fpex%2Fdownloads.aspx https://www.microsoft.com/en-us/research/project/pex-and-moles-isolation-and-white-box-unit-testing-for-net/?from=http%3A%2F%2Fresearch.microsoft.com%2Fen-us%2Fprojects%2Fpex%2Fdownloads.aspx

希望能帮助到你。

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

使用最小起订量的扩展方法的单元测试 的相关文章

  • 扫描文本文件时如何跳过行?

    我想扫描一个文件并在阅读之前跳过一行文本 我试过 fscanf pointer n struct test i j 但这个语法只是从第一行开始 我可以使用 scanf 使用以下指令跳过行 fscanf config file n n 格式字
  • 更快的算法来计算有多少数字可以被范围内的特定整数整除

    int a b c d 0 cin gt gt a gt gt b gt gt c for int i a i lt b i if i c 0 d cout lt
  • 不要模拟值对象:过于通用的规则,没有解释

    以下是 Mockito 单元测试框架的引用 不要模拟值对象 为什么有人会想要这样做呢 因为实例化对象太痛苦了 gt 无效 原因 如果创造新的装置太困难 那就是一个迹象 代码可能需要一些认真的重构 另一种方法是创建 价值对象的构建者 有一些工
  • 在运行时设置 DataGridView 上的 DataFormatString?

    是否可以在运行时设置 ASP NET DataGridView 中的列或单元格的 DataFormatString 属性 这应该有效 BoundField priceField grid Columns 0 as BoundField pr
  • 在 GCC 和 Clang 下,使用 lambda 的简单 RAII 包装器的复制初始化意外失败

    我在创建一个简单的 RAII 包装器时遇到了一个意想不到的问题 更不用说下面代码的逻辑不完整性了 复制构造函数和赋值运算符未删除等 这意味着是一个SSCCE 令我印象深刻的是复制初始化我的包装器与临时 lambda 的结果会导致编译错误 而
  • C# 中附加/分离事件处理程序的不同方式有什么区别

    我的问题有两个部分 首先 我们可以通过以下两种方式附加事件处理程序 myObject MyEvent new EventHandler MyHandler myObject MyEvent MyHandler 据我了解 这两者是等价的 在第
  • C 中的模仿函数重写

    具体来说 函数重写能够调用基本重写方法 这有两部分 一个是预编译的库代码 1 另一个是库的用户代码 2 我在这里实现了一个尽可能最小的经典 Person 和 Employee 示例 非常感谢了解 OOP 概念的铁杆 C 开发人员的回应 我正
  • 特定设备的不同字体大小

    我目前正在开发通用应用程序 我需要分别处理移动设备和桌面的文本框字体大小 我找到了一些方法 但都不能解决问题 使用 VisualStateManager 和 StateTrigger 为例
  • .net Framework (.net 4.0) 中定义 Base 3 数字的类

    我正在寻找一些可以用来定义 3 基数 三进制数 的类 有什么我可以在 net 框架中使用的东西或者我需要写一些东西吗 谢谢你的帮助 您可以使用解析Convert ToInt32 s base http msdn microsoft com
  • 使用 openssl 检查服务器安全协议

    我有一个框架应用程序 它根据使用方式连接到不同的服务器 对于 https 连接 使用 openssl 我的问题是 我需要知道我连接的服务器是否使用 SSL 还是 TLS 以便我可以创建正确的 SSL 上下文 目前 如果我使用错误的上下文尝试
  • 在“using”语句中使用各种类型 (C#)

    自从C usingstatements只是try finally dispose 的语法糖 为什么它接受多个对象仅当它们属于同一类型时 我不明白 因为它们需要的只是 IDisposable 如果它们都实现 IDisposable 应该没问题
  • 线程安全的 C++ 堆栈

    我是 C 新手 正在编写一个多线程应用程序 不同的编写者将对象推入堆栈 读者将它们从堆栈中拉出 或至少将指针推入对象 C 中是否有任何内置结构可以在不添加锁定代码等的情况下处理此问题 如果没有 那么 Boost 库呢 EDIT 你好 感谢您
  • 如何不在类中实现接口的功能?

    面试时面试官问了我以下问题 但我不知道这个问题的答案是什么 请帮忙 如果我不想 我必须做什么 在我的类中实现一个函数 在接口中声明为 由我班实施 Edited 我正在使用 NET 和 C 如果有人可以提供 C 示例代码示例 那就太好了 Th
  • 如何将字符串转换为 Indian Money 格式?

    我正在尝试将字符串转换为印度货币格式 例如如果输入为 1234567 则输出应为 12 34 567 我编写了以下代码 但它没有给出预期的输出 CultureInfo hindi new CultureInfo hi IN string t
  • `cosf`、`sinf` 等不在 `std` 中 [重复]

    这个问题在这里已经有答案了 根据这里的讨论 我有报告了一个错误 https bugs launchpad net ubuntu source gcc 8 bug 1831385给 Ubuntu 开发者 编译以下示例 C 程序时 includ
  • 在 .NET 中记录 StackOverflowException

    最近 我的 NET 应用程序 asp net 网站 中出现了堆栈溢出异常 我之所以知道该异常是因为它出现在我的 EventLog 中 我知道 StackOverflow 异常无法被捕获或处理 但是有没有办法在它杀死您的应用程序之前记录它 我
  • 微软语音识别速度

    我正在使用微软的语音识别器开发一个小型练习应用程序 对于我正在做的事情来说 我似乎无法让它足够快地识别单个单词 我希望能够正常说话 系统将从我所说的内容中抓取 关键字 并生成一个字符串 目前我正在使用 5 个单词的自定义语法 红 蓝 黄 绿
  • 为什么C语言中可以使用多个分号?

    在 C 中我可以执行以下操作 int main printf HELLO WORLD 它有效 这是为什么 我个人的想法 分号是一个 NO OPERATION 来自维基百科 指示符 拥有一大串分号与拥有一个分号并告诉 C 语句已结束具有相同的
  • 为什么 C# 接口名称前面加上“I”

    这种命名约定背后的基本原理是什么 我没有看到任何好处 额外的前缀只会污染 API 我的想法与康拉德一致response https stackoverflow com a 222502 9898与此相关的question https sta
  • 通过 cmake 链接作为外部项目包含的 opencv 库[重复]

    这个问题在这里已经有答案了 我对 cmake 比较陌生 经过几天的努力无法弄清楚以下事情 我有一个依赖于 opencv 的项目 它本身就是一个 cmake 项目 我想静态链接 opencv 库 我正在做的是我的项目中有一份 opencv 源

随机推荐

  • EF 4.1 Code First:类型中的每个属性名称必须是唯一的查找表关联错误

    这是我第一次尝试创建自己的 EF 模型 我发现自己在尝试使用 Code First 创建查找表关联时陷入困境 以便我可以访问 myProduct Category AltCategoryID 我已经设置了模型和映射 据我所知是正确的 但继续
  • 在R中寻找SIR模型参数的问题

    我正在尝试使用 R 中的 SIR 模型来模拟冠状病毒感染率 但是 如您所见 我的 beta 控制易感者和感染者之间的过渡 和 gamma 控制感染者和康复者之间的过渡 值不正确 beta gamma 1 0000000 0 8407238
  • 如果存在则不能批量工作

    我正在尝试创建一个 bat 文件来创建一个简单的文本文件 我的问题是 Windows XP 主文件夹是C Documents and Settings而 vista 及以上C Users 我正在运行这个 无论我为路径名输入什么 我总是得到i
  • Express 中跨子域的会话

    我正在使用 Express 中的 vhost 功能和 Node 来管理我的应用程序的多个子域 该应用程序使用相同的会话密钥和密钥 并且我相信我已经使用了正确的会话 cookie 设置 cookie path domain example c
  • 如何在 Azure AD B2C 中存储来自 IdentityServer 3 的声明或仅将其包含在 AAD B2C 颁发的令牌中

    我想知道是否可以将 oid 声明或基本上由 Identity Server 3 发出的任何其他声明传播到 AAD B2C 并使其成为 Azure AD B2C 发出的令牌的一部分 我们需要在客户端拥有一个原始 ID 而我们从 sub 和 o
  • 没有框架的javascript ajax请求

    有谁知道如何在不使用 jQuery 等 javascript 框架的情况下制作跨浏览器的 ajax 请求功能 The XMLHttpRequest对象实际上使用起来并不那么复杂 为了广泛兼容 您必须玩一些游戏来创建对象 但之后的简单操作就相
  • 如何在浏览器窗口调整大小时调整CSS中的梯形大小

    当我调整浏览器窗口大小时 我试图调整梯形形状的大小 我试图通过使用来做到这一点box resize但还是没用 是否可以通过使用定义 创建的梯形来做到这一点border黑客 还有什么其他方法可以使梯形能够在调整浏览器窗口大小时调整大小 div
  • Codeigniter - 提交后验证失败时重新填充表单

    我有一个表单 要求用户输入一些信息 如果他们未能填写必填字段 他们将被重新提交表格 页面顶部通知他们需要哪些字段 并且我启用了粘性表单 set value 这样他们的输入就不会丢失 我使用 flashdata 向用户显示消息 即 如果他们输
  • 从 listWidget 中删除选定的项目

    如何从列表中删除选定的项目QListWidget 我尝试编写以下代码 但它不起作用 QList
  • 使用 Moya 获取响应标头

    我在我的 swift 应用程序中使用 Moya 来处理网络请求 我能够使用 Moya Object Mapper 获取请求并映射结果 我之前使用过 alamofire 熟悉如何发布 获取请求和读取响应头 然而 我似乎不明白如何在 Moya
  • Ag-grid 捆绑包尺寸太大

    我正在使用 Angular 6 开发一个 Web 应用程序 我有一个 Ag grid 企业版 Ag grid 文档说 我们必须导入所有农业网格角 农业网格社区 and 农业电网企业与农网企业合作 编译后 主包总大小超过 1 5 MB 在那里
  • Firebase 函数问题以及 .add() 与 .doc().set() 之间的区别

    几周以来我遇到了以下问题 以前不是问题 1 添加 数据 const saveNewDoc functions https onCall data NewDocWrite context CallableContext gt return a
  • 两个类之间的递归java泛型

    这是一个类似于中提出的问题两个类之间可能递归的 Java 泛型 https stackoverflow com questions 5929689 possibly recursive java generics between two c
  • 从派生类初始化列表调用基类构造函数的顺序

    struct B int b1 b2 B int int struct D B int d1 d2 which is technically better D int i int j int k int l B i j d1 k d2 l
  • AttributeError:“模块”对象没有属性“get_frontal_face_ detector”

    我试图使用 python 的 dlib 库来检测面部标志 我正在使用上面给出的例子人脸检测器 http dlib net face landmark detection py html 我在安装dlib之前已经安装了所有依赖项 首先 我使用
  • Joomla 2.5创建组件并保存数据

    我一直在使用这个文档 我在网上可以找到的唯一文档 来构建一个组件 http docs joomla org Developing a Model View Controller Component 2 5 Introduction http
  • 为什么 awk 似乎随机化数组?

    如果你看一下这个的输出awk测试一下 你会看到array in awk似乎是按某种随机图案打印的 对于相同数量的输入 它似乎具有相同的顺序 为什么会这样呢 echo one two three four five six awk for i
  • Windows 服务中线程内的计时器

    我不知道如何以最佳方式解决这个问题 现在我有一个 Windows 服务 其唯一任务是从具有特定 DSN 的数据库收集数据 然后在数据有效时发送电子邮件 该服务包含一个计时器 每 5 分钟滴答一次并执行上述任务 现在我需要重新编写Window
  • 如何在 d3 javascript 中为 SVG 文本元素分配唯一 id

    在 d3 中制作条形图 我有 30 多个条形图 x 轴上有 30 多个相应标签 我希望在页面加载时隐藏 x 轴标签 这是有效的 并且仅当用户将光标悬停在相应的栏 svg 矩形对象 上时才出现 为此 我为每个矩形和每个文本元素分配一个 id
  • 使用最小起订量的扩展方法的单元测试

    我正在为 azuresearch 的函数 uploaddocuments 编写单元测试 Unsupported expression gt Index It IsAny