ArgumentCaptor2025年3月17日 | 阅读 3 分钟 AgrumentCaptor 是在 org.mockito 包中定义的类。 它用于捕获参数值以进行进一步的断言。 我们将 argument captor 与诸如 verify() 或 then() 之类的方法一起使用,以获取调用特定方法时传递的值。 以下是ArgumentCaptor类的一些重要方法
建议将ArgumentCaptor与验证一起使用,而不要与存根一起使用。 因为使用存根会降低测试的可读性,因为 captor 是在断言(验证或 then)块之外定义的。 ArgumentCaptor 示例在这里,我们将使用 BDD 样式创建一个 ArgumentCapture 的示例。 在此示例中,我们使用 then().should() 方法代替 BDDMockito 类中可用的 verify() 方法。 使用它们的主要目的是使代码更具可读性和理解性。 步骤 1:创建一个名为 ToDoService 的接口,其中包含两个未实现的方法。 ToDoService.java 步骤 2:创建名为 ToDoBusiness 的 ToDoService 接口的实现类。 ToDoBusiness.java 步骤 3:创建一个名为 ToDoBusinessMock 的模拟类,用于测试。 在这里,我们声明了一个 ArgumentCaptor,当调用 deleteTodos() 方法时,它会捕获此 (todoService) 模拟的参数。 ToDoBusinessMock.java 在上面的代码中,我们捕获了参数,并通过使用 getValue() 方法检查传递的参数是否为 "Use Spring MVC" 。 输出 ![]() 考虑一种情况,我们需要同时删除多个值。 在这种情况下,使用名为 getAllValues() 的方法,如下所示。 但是上面的代码将抛出一个异常,如下所示。 ![]() 要删除上面的异常,我们需要指定应该调用该方法的次数。 假设列表中有两个非 Hibernate 项可用,因此我们需要调用该方法两次,如下所示。 输出 ![]() |
我们请求您订阅我们的新闻通讯以获取最新更新。