断言某个方法在测试中使用Consumer类型作为参数进行调用



我有一个简单的函数,可以调用一些方法。我必须发送的参数之一是Consumer类型。我希望最简单的测试是断言params,但我很难断言Consumer类型。我的代码看起来像这个

@Component
public class MyService {
@Autowired
private SomeLib someLib;

public void doSomething() {
String someConfigValue = "hello";
Consumer<SomeType> dataProcessor = this::processData;
someLib.enhanceMethod(someConfigValue, dataProcessor)
}
private void processData(SomeType data) {
log.info(data);
}
}

我试图写的测试如下

@RunWith(MockitoJUnitRunner.class)
public class MyServiceTest {
@Mock
SomeLib someLib;

@InjectMocks
MyService myService;

@Test
public void shouldCallEnhanceMethodWithRightParams() {
myService.doSomething();
verify(someLib).enhanceMethod("hello", ???);  
}
}

关于如何实现这一目标,有什么建议吗?还有其他我可以写的替代测试吗?我想在不使用PowerMock的情况下进行测试

更新:代码只有一个依赖项,并使用简单字符串param作为第一个参数。

您可以像这样使用

@Test
public void shouldCallEnhanceMethodWithRightParams() {
myService.doSomething();
verify(someLib).enhanceMethod(any(SomeConfigValue.class), any(Consumer.class));
}

最新更新