java - 使用 Mockito 捕获两个参数

标签 java unit-testing mocking mockito

我想测试 MyClass,我的意思是测试公共(public)函数 myFunction。该函数从 MyService 调用 someMethod。 我想检查它是否传递了创建的有效参数 str1 和 str2 在这个类上。 我正在考虑捕获这些参数,但我不确定是否可以捕获 2 个参数,或者如何做到这一点。 如果可能的话,我不想改变可见性

class MyService
{
public void someMethod(String str1, String str2);
}

class MyClass
{
private MyService myService;
private String createStrOne(){...};
private String createStrTwo(){...};
....
public void myFunction()
{
  myService = new MyService();
  myService.someMethod(createStrOne(),createStrTwo());
}
}

最佳答案

你只需要两个参数捕获器

@Mock
private Service service;

@Captor
private ArgumentCaptor<String> strOneCaptor;

@Captor
private ArgumentCaptor<String> strTwoCaptor;

在测试中:

Mockito.verify(service).someMethod(strOneCaptor.capture(), strTwoCaptor.capture());

assertEquals(strOneCaptor.getValue(), expectedStrOne);
assertEquals(strTwoCaptor.getValue(), expectedStrTwo);

关于java - 使用 Mockito 捕获两个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48657232/

相关文章:

java - Firebase 无法识别用于设置值的字符串键

unit-testing - Angular 2 : MockBackend returning 'undefined' response

javascript - 使用 node-mocks-http 测试没有发出事件的服务

.net - 模拟对象的底层类型

java - 更改应用程序打开动画

java - 具有高空间一致性的 3D 整数坐标的哈希码

java - 如何引用 Jasmine 测试根文件夹上方的文件?

javascript - Jest 中 mock 和 unmock 测试的区别

android - 在导航应用程序中使用模拟位置

java - PaintComponent 上的 TIMErTask