有没有办法在 Spock 中进行模拟参数捕获

2024-03-13

我环顾四周并尝试了不同的方法但无济于事。互联网上的例子很少,而且恕我直言,非常简单。我的用例:

(下面的“itocNetworkHandler”是模拟的)

when: "we're doing stuff"
    StandardResponse response = cms.doCardStuff("123", "111", order)
....
then: "we get proper calls and response object"
    1 * cms.itocNetworkHandler.doNetworkCall(
            { it instanceof ReplacementRequestRecord
            }, StandardResponseRecord.class) >> record

我想将参数('it')存储到模拟上的“doNetworkCall”中。

我想要参数的原因是因为我正在测试的对象应该接受我的参数,做一些事情,创建一个新对象并将其传递给我的模拟。我想确保创建的对象看起来像它应该的那样。

非常感谢指点。


您可以按如下方式捕获参数:

// must be declared before when-block (or inside Specification.interaction {})
def captured

when:
...

then:
1 * mock.doNetworkCall(...) >> { record, recordClass -> 
    // save the argument
    captured = record
    ...
}
// use the saved argument
captured == ...

也就是说,通常有一个更简单的解决方案,例如检查参数约束中的预期记录(例如...doNetworkCall( { it == ... } )).

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

有没有办法在 Spock 中进行模拟参数捕获 的相关文章

  • JUnit 测试 Spymemcached 客户端

    我有一个类围绕spymemcached 客户端 我想编写一些JUnit 测试来测试getValue 和addKey 方法是否有效 问题是无法从测试服务器访问spymemcached 服务器 所以我想这里需要一些模拟 我的简化类看起来像这样
  • 如何使用最小起订量模拟 Controller.User

    我有几个 ActionMethods 查询 Controller User 的角色 如下所示 bool isAdmin User IsInRole admin 在这种情况下可以方便地行事 我开始使用这样的代码对这些方法进行测试 TestMe
  • 如何测试具有多个输入调用的循环?

    我正在尝试测试一个依赖多个用户输入来返回某个值的函数 我已经在这里寻找了多个答案 但没有一个能够解决我的问题 我看到了参数化 模拟和猴子补丁的东西 但没有任何帮助 我认为很大程度上是因为我没有清楚地理解正在做的事情背后的概念 并且我无法适应
  • 如何为函数创建 Moq 模拟

    我有以下 Func 方法 我需要模拟它 Func
  • Moq - 是否可以在不使用 It.IsAny 的情况下设置模拟

    我一直使用 Moq 进行单元测试 有时我会嘲笑有很多参数的方法 想象一下这样的方法 public class WorkClient public void DoSomething string itemName int itemCount
  • 如何通过 NUnit 有效地对使用 ADO.NET 和 SQL Server 的 DAL 进行单元测试?

    因此 您在 C 中有一个使用存储库模式的 DAL 并且每个存储库都有一个接口 它由 ADO NET MS SQL Server 和存储过程调用支持 这对于在进行单元测试时对正在其他地方使用的存储库进行存根 模拟非常有用 我喜欢它 不过 我很
  • 如何在 Grails Geb/Spock 测试用例中获取 sessionFactory?

    我想我需要在 GebSpec 测试中刷新 hibernate 会话 所以我想获取 sessionFactory 看起来应该被注入 但是当我做这样的事情时 class MySpec extends GebSpec def sessionFac
  • 使用 Mockito 模拟某些方法,但不模拟其他方法

    有没有办法使用 Mockito 模拟类中的某些方法 而不模拟其他方法 例如 在这个 诚然是人为的 Stock我想嘲笑的班级getPrice and getQuantity 返回值 如下面的测试片段所示 但我想要getValue 执行乘法 如
  • spring boot 使用哪个“切片”来测试服务组件

    我正在使用 spring boot 开发一个rest api 它由标准层组成 控制器 RestController 处理传入的http请求并公开api端点 然后是服务层 Service 最后是存储库层 Repository 我的问题是关于单
  • Symfony2 条件服务声明

    我目前正在尝试找到一个可靠的解决方案来动态更改 Symfony2 服务的依赖关系 详细信息 我有一个服务 它使用 HTTP 驱动程序与外部 API 进行通信 class myAwesomeService private httpDriver
  • Python - 对象 MagicMock 不能在“await”表达式中使用

    当我尝试使用 MagicMock 在单元测试中模拟异步函数时 出现以下异常 类型错误 对象 MagicMock 不能在 await 表达式中使用 示例代码如下 source code class Service async def comp
  • 这可以用 Moq 来嘲笑吗?

    我正在努力模拟一些外部依赖项 并且在一个第三方类中遇到了麻烦 该类在其构造函数中接收另一个第三方类的实例 希望 SO 社区能给我一些指导 我想创建一个模拟实例SomeRelatedLibraryClass它的构造函数接受一个模拟实例Some
  • 模拟类:Mock() 还是 patch()?

    我在用mock http www voidspace org uk python mock index html使用Python 想知道这两种方法中哪一种更好 阅读 更Pythonic 方法一 只需创建一个模拟对象并使用它 代码如下 def
  • spock 测试的 where 子句中的多个赋值?

    我正在使用 Spock 框架进行测试 并且有一个关于 where 子句中的多变量赋值的问题 我有以下测试用例 def sending a message delegates to message sender when sendMessag
  • 如何模拟私有内部类

    我有一个 spring 应用程序 我想在像这样的控制器上创建一个单一测试 问题是Wrapper类是私有内部类 所以测试中看不懂Wrapper 是否可以在不更改控制器类的情况下使用 Mockito 来模拟它 我可以使用prepareData
  • 具有多个输入的单元测试

    我一直在尝试进行单元测试 并且正在尝试处理一个函数的单元测试 该函数的返回值取决于一堆参数 不过信息量有点大 有点让人不知所措 考虑以下 我有课Article 其中有价格集合 它有一个方法GetCurrentPrice它根据一些规则确定当前
  • 如何替换被测模块的文件访问引用

    pyfakefs https code google com p pyfakefs 听起来非常有用 它 最初是作为核心 Python 模块的一个适度的假实现来开发的 以支持中等复杂的文件系统交互 并于 2006 年 9 月在 Google
  • 在 Spock 中进行测试的 Spring Boot 3 不会在 @SpringBootTest 测试中创建上下文

    我使用最新的 Spring Boot 3 和 spock 版本创建了简单的项目 您可以在这里找到 https github com RafBorkowski SpringBoot3SpockExample https github com
  • Java检测类是否是代理

    是否可以检测一个类是否是proxy dynamic cglib or 否则 让课Aand B实现一个通用接口I 然后我需要定义一个例程classEquals签名的 public boolean classEquals Class
  • 不返回值的方法的起订量调用库(void 方法)

    我正在尝试模拟正在测试的类 以便在测试它们时可以对各个方法进行调用 这将允许我仅将方法设置测试为调用库 并且从测试方法中调用的所有其他方法 同一类 都将被模拟 但是 对于不返回值的方法 我无法执行此操作 对于不返回值的方法 智能感知只是不显

随机推荐

  • 用 python 生成随机 ISO8601 日期?

    我已经看到如何从 ISO 格式的日期开始 例如2007 01 14T20 34 22 00 00 使用 python 转换为更具可读性的格式datetime 有没有一种简单的方法来生成随机 ISO8601 日期如同这个答案 https st
  • Cygwin 编译错误:“此应用程序已请求运行时以不寻常的方式终止它”

    我正在尝试运行 Cygwin 但遇到了一些问题 我尝试用 mingw 编译一个既可以在 Windows 上运行也可以在 Unix 系统上运行的程序 但是当我通过 Cygwin 编译它时 gcc threads c o threads 我收到
  • 使用 Sequelize 将多个参数安全地发送到 IN 子句以进行原始查询

    使用 Sequelize 我可以执行原始查询并安全地发送参数 感谢通过参数进行数据库绑定参数 const baz 1 sequelize query select from foo where bar baz replacements ba
  • 如何避免使用JPA注释循环引用?

    我正在为一家商店注释我的域模型 使用 JPA 2 使用 Hibernate Provider 商店里的每件产品都可以有一个Category 每个类别可以分配给多个超级类别和子类别 这意味着 蜡烛 类别可以将 餐厅 和 装饰 作为父类别 将
  • 在 Microsoft Visual Basic 6.0 中填充组合框

    我在 Microsoft Visual Basic 6 0 中有一个组合框 我必须将项目添加到组合框中 这些项目存储在 SQL 数据库中的 Column1 表中 我不确定如何让这些项目在运行时显示在组合框中 以便用户可以选择不同的选项 注
  • 从命令行查找目录中的文件

    在 eclipse 和 textmate 等编辑器 IDE 中 有一些快捷方式可以快速查找项目目录中的特定文件 是否有类似的工具可以在 bash 或其他 shell 中 递归地 对目录中的文件名进行完整路径补全 我的项目有很多目录 而且还有
  • 如何在java中对用户输入进行单元测试

    我试图了解如何测试用户的输入 请注意 我不是在尝试进行模拟测试 而是对实际用户输入的测试 目前 正如您在我的程序中看到的那样 我已经对测试用例的值进行了硬编码 并且它通过了所有测试 但是我如何获取用户的输入并对其进行测试 有没有一种方法可以
  • 如何从另一个模型引用 Django 模型

    我希望在管理面板中为一个测试程序创建一个视图 该程序记录书籍 出版商和作者 如 djangoproject com 我定义了以下两个模型 class Author models Model first name models CharFie
  • Applescript 和 iCal 交互

    我正在尝试编写一个 AppleScript 来查询 iCal 并查找任何日历中给定日期的所有事件 我首先编写一个简单的脚本 对给定日历中的每个事件执行一些简单的操作 tell application iCal tell calendar R
  • 在 React 中加载时隐藏移动浏览器的地址栏(IOS / Android)

    Safari and Chrome移动设备上的页面加载时都包含可见的地址栏 当页面主体滚动时 URL 栏最小化 我的项目基于ReactJS 和我试图在页面加载时实现这个结果 因此不需要用户交互 页面需要加载URL 栏最小化 我的网络应用程序
  • Bash:如何在 osx bash 中用新行替换字符串?

    我经常用谷歌搜索它 我只想要这一行 echo Replace
  • Google 地图 - 查找靠近我的路线的城市

    我想获得我所访问的所有城市的列表might在 A 点和 B 点之间经过 输入 A点为原点B点为目的地 Output A点和B点之间的路线 这是显而易见的 AND距离我的路线较近 X 英里的城市 城镇 地点的列表 我想向用户提供一个需要考虑的
  • RecordRTC:Ondataavailable 被调用两次。只有第一个文件正确,其他文件已损坏或太小[重复]

    这个问题在这里已经有答案了 我想以2秒的间隔记录本地和远程流并用Ajax上传到服务器 但问题是 ondataavailable 方法被调用了两次 因此同一个视频被上传到服务器两次 第一个视频可以正常播放 而其余视频要么已损坏 要么非常小 不
  • 包容还是排他? Intel Core IvyBridge 处理器中的 L1、L2 缓存

    我有 Intel Core IvyBridge 处理器 Intel R Core TM i7 3770 CPU 3 40GHz L1 32KB L2 256KB L3 8MB 我知道L3是包容性的 是多核共享的 我想了解有关我的系统的以下信
  • Google INVISIBLE reCaptcha + Bootstrap 验证器

    我有一张登记表引导验证器 http 1000hz github io bootstrap validator 我想在提交表单之前验证 google INVISIBLE reCaptcha 客户端 有一些exapmle https devel
  • 选择组合框时的事件

    我的问题是在 C WPF 的 ComboBox 中选择 ComboBoxItem 时如何执行操作 In 这个帖子 https stackoverflow com questions 22224172 wpf selectionchanged
  • 将整数四舍五入到另一个整数的最接近倍数

    我需要将整数舍入为另一个整数的最接近的倍数 100 的倍数情况下的结果示例 36 gt 0 99 gt 100 123 gt 100 164 gt 200 等等 我想出了下面的代码 它可以工作 但感觉 脏 int RoundToMultip
  • 配置错误:此配置部分不能在此路径上使用

    我在将站点部署到服务器时遇到错误 当尝试在 IIS 中加载主页或访问新站点上的身份验证时 出现错误 配置错误 此配置部分不能在此路径中使用 当该部分被锁定在父级别时 就会发生这种情况 锁定是 默认情况下 overrideModeDefaul
  • 如何获取 web2py 中的当前 url?

    在web2py中如何获取当前页面的完整url 我想要出现在浏览器地址栏中的 可能是重写的 url e g 生成它的最简单的方法可能是 URL args request args vars request get vars host True
  • 有没有办法在 Spock 中进行模拟参数捕获

    我环顾四周并尝试了不同的方法但无济于事 互联网上的例子很少 而且恕我直言 非常简单 我的用例 下面的 itocNetworkHandler 是模拟的 when we re doing stuff StandardResponse respo