Mockito:无需强制转换即可验证参数
Mockito: verify parameter without having to cast it
我有一个服务class,方法如下:
void doSomething(List<String> list)
我嘲笑这个 class 我想验证作为参数传递的列表是否只有一个元素。我是这样做的:
verify(myService).doSomething((List<String>) argThat(hasSize(1))))
如您所见我必须将参数转换为List<String>
否则它不会被编译:
incompatible types: inferred type does not conform to upper bound(s)
inferred: java.util.Collection<? extends java.lang.Object>
upper bound(s): java.util.List<java.lang.String>,java.lang.Object
问题:如何在不转换的情况下验证调用?我想让事情简单、可读和优雅。
我更喜欢这个解决方案:
final ArgumentCaptor<List> argumentCaptor = ArgumentCaptor.forClass(List.class);
verify(myService).doSomething(argumentCaptor.capture());
assertThat(argumentCaptor.getValue().size()).isEqualTo(1);
我有一个服务class,方法如下:
void doSomething(List<String> list)
我嘲笑这个 class 我想验证作为参数传递的列表是否只有一个元素。我是这样做的:
verify(myService).doSomething((List<String>) argThat(hasSize(1))))
如您所见我必须将参数转换为List<String>
否则它不会被编译:
incompatible types: inferred type does not conform to upper bound(s)
inferred: java.util.Collection<? extends java.lang.Object>
upper bound(s): java.util.List<java.lang.String>,java.lang.Object
问题:如何在不转换的情况下验证调用?我想让事情简单、可读和优雅。
我更喜欢这个解决方案:
final ArgumentCaptor<List> argumentCaptor = ArgumentCaptor.forClass(List.class);
verify(myService).doSomething(argumentCaptor.capture());
assertThat(argumentCaptor.getValue().size()).isEqualTo(1);