【问题标题】:Capture two arguments with Mockito使用 Mockito 捕获两个参数
【发布时间】:2018-02-07 06:22:00
【问题描述】:

我想测试 MyClass,我的意思是测试公共函数 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());
}
}

【问题讨论】:

  • 如果你想检查你的方法 createStringOne() 和 createStringTwo() 是否返回有效参数,你应该将它们包保护起来并用单元测试来测试它们。然后,如果需要,您可以模拟它们来测试 myFunction()。
  • 如果可能,我不想更改可见性。我会把它添加到问题中

标签: java unit-testing mocking mockito


【解决方案1】:

你只需要两个参数捕获器

@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);

【讨论】:

    猜你喜欢
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 2018-02-27
    • 2023-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多