我有一个简单的函数,可以调用一些方法。我必须发送的参数之一是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));
}