Mockito 和 Hamcrest:如何验证 Collection 参数的调用?

2024-05-14

我遇到了 Mockito 和 Hamcrest 的泛型问题。

请假设以下界面:

public interface Service {
    void perform(Collection<String> elements);
}

以及以下测试片段:

Service service = mock(Service.class);

// ... perform business logic

verify(service).perform(Matchers.argThat(contains("a", "b")));

因此,我想验证我的业务逻辑是否确实使用按顺序包含“a”和“b”的集合调用了该服务。

然而,返回类型contains(...) is Matcher<Iterable<? extends E>>, so Matchers.argThat(...)回报Iterable<String>就我而言,这自然不适用于所需的Collection<String>.

我知道我可以使用中提出的参数捕获器Hamcrest hasItem 和 Mockito 验证不一致 https://stackoverflow.com/questions/17174192/hamcrest-hasitem-and-mockito-verify-inconsistency,但我非常不想这样做。

有什么建议么! 谢谢!


你可以只写

verify(service).perform((Collection<String>) Matchers.argThat(contains("a", "b")));

从编译器的角度来看,这是强制转换Iterable<String> to a Collection<String>这很好,因为后者是前者的子类型。在运行时,argThat将返回null,这样就可以传递给perform没有ClassCastException。重要的一点是匹配器进入 Mockito 的内部参数结构进行验证,这就是argThat does.

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

Mockito 和 Hamcrest:如何验证 Collection 参数的调用? 的相关文章

随机推荐

  • 使用S3上传但不允许公共访问

    我的想法是创建一个 S3 存储桶以允许用户上传二进制对象 下一步是确认上传 然后 API 将启动文件处理 为了使其更安全 客户端将首先请求上传位置 然后 API 会在 S3 上为此上传分配并预先创建一个一次性使用目录 并在该目录上设置访问策
  • 在 PHP 中添加分数会产生不同的结果[重复]

    这个问题在这里已经有答案了 可能的重复 PHP float 到 int 类型转换的意外结果 https stackoverflow com questions 3385685 php unexpected result of float t
  • 这个 GraphQL 中的 `... on` 在做什么?

    我试图模仿某些 GraphQL 的功能 但我无权运行原始版本 它的形式如下 query dataSources dataType Ais on AisDataSource messages filter broadcastType Stat
  • iOS JPEG 图像旋转 90 度

    我正在使用选择器视图从相册中选择图像 我使用上面的代码 void imagePickerController UIImagePickerController picker didFinishPickingMediaWithInfo NSDi
  • Facebook 自定义故事与大图像 - 使用 Javascript 打开图

    我正在尝试创建一个自定义故事 每次有人尝试发布它时都会有一个新图像 现在我创建了一个对象 以及将两者结合起来的动作和故事 我想要实现的是一个看起来像这样的故事https fbcdn dragon a akamaihd net hphotos
  • git 预提交钩子格式代码 - Intellij/Android Studio

    本要点展示了如何在预提交时使用 Eclipse 格式化程序自动格式化 Java 代码 Source https gist github com ktoso 708972 https gist github com ktoso 708972
  • 如何使自定义绘制的 UITableViewCell 正确调整大小?

    出于性能原因 我在自定义视图中绘制 UITableViewCell 的字符串 该视图重写其 drawRect 方法 以使用 NSString drawInRect 直接在视图矩形中绘制字符串 这类似于 Apple 的 TableViewSu
  • TSQL如何在xml列中选择具有技能的员工

    在如下所示的表架构中 CREATE TABLE dbo Employee EmployeeId uniqueidentifier NOT NULL Name nvarchar 50 NOT NULL Location nvarchar 50
  • Objective-C 使用字符串池吗?

    我知道Java https stackoverflow com questions 3801343 what is string pool in java and C http msdn microsoft com en us librar
  • 打印一份拥有多个家庭的人员名单,每个家庭都有多个电话号码

    我有一类 Person 它可以有多个 Home 每个 Home 都有一个或多个电话号码 我已经定义了类 但现在我正在尝试创建一个视图 其中列出每个人的所有家庭以及每个家庭地址的所有电话号码 类似于 john smith 123 fake s
  • 在光标所在行强制关闭!

    嘿 我正在尝试创建一个应用程序来查找存储在 SQlite 数据库中的 GPS 数据 但我面临一个问题 我构建了一个 DbAdapter 类来创建数据库 现在我尝试使用以下函数从另一个类获取所有数据上的光标 public Cursor fet
  • 在 Spring 中为 @Pathvariable 添加类级别验证

    在发布这个问题之前 我已经做了很多研究并尝试了很多可用的解决方案 这是我陷入的棘手情况 我有一个 Spring 控制器 它有多个请求映射 它们都有 PathVariables 控制器如下所示 Controller EnableWebMvc
  • 在Oracle中查找不包含数字数据的行

    我试图在一个非常大的 Oracle 表中找到一些有问题的记录 即使该列是 varchar2 列 也应包含所有数值数据 我需要找到不包含数字数据的记录 当我尝试在此列上调用 to number col name 函数时 它会抛出错误 我想你可
  • 这是正确的 UML 活动图吗?

    这是活动图截图 https i stack imgur com 575VU jpg 这是对的吗 如果不是 我做错了什么 从语法上讲 这个带有分区的活动图似乎几乎是正确的 起始节点应该是实心 黑色 圆圈 最终节点应该有一个内部实心 黑色 圆圈
  • 使用 R 从字符串中提取函数参数

    最好使用stringr包 我想创建一个函数extract 以字符串向量作为参数 vec lt c div span icon hospital user i18n t Enrolments or i18n t Paper a string
  • FileInfo.BaseName 存在于 PowerShell 中,但不存在于直接 .NET 中

    为什么在 NET 中System IO FileInfo对象没有BaseName属性 但我可以通过 PowerShell 使用该属性 例如 FolderItems Get ChildItem Path C Where Object isno
  • Django Web 应用程序中的 SMTP 问题

    我被要求向使用 Django Python 框架实现的现有程序添加一个功能 此功能将允许用户单击一个按钮 该按钮将显示一个小对话框 表单以输入值 我确实编写了一些代码 显示电子邮件已发送的消息 但实际上 它没有发送 My code from
  • 标签中的路径显示

    NET 中有没有自动修剪路径字符串的方法 例如 C Documents and Settings nick My Documents Tests demo data demo data emx becomes C Documents dem
  • 在 Visual Studio 中调试非托管 C++ 图像

    我确实在 Visual Studio 2010 下的非托管 C 上编写了大量图像处理代码 其中涉及许多不同的图像 我希望能够在逐步调试时像简单标识符一样轻松地观看它们 我当前的解决方案是使用一些在 Matlab 控制台中导出图像的函数 可以
  • Mockito 和 Hamcrest:如何验证 Collection 参数的调用?

    我遇到了 Mockito 和 Hamcrest 的泛型问题 请假设以下界面 public interface Service void perform Collection