Mockito和Hamcrest:如何验证集合参数的调用?
我在Mockito和Hamcrest上遇到了一个通用问题。
请假设以下界面:
public interface Service {
void perform(Collection<String> elements);
}
以及以下测试片段:
Service service = mock(Service.class);
// ... perform business logic
verify(service).perform(Matchers.argThat(contains("a", "b")));
因此,我想验证我的业务逻辑是否确实调用了具有按该顺序包含“a”和“b”的集合的服务。
但是,返回类型是 ,因此在我的情况下返回,这自然不适用于所需的。contains(...)
Matcher<Iterable<? extends E>>
Matchers.argThat(...)
Iterable<String>
Collection<String>
我知道我可以使用Hamcrest hasItem和Mockito验证不一致中提出的参数俘虏,但我非常希望不要这样做。
任何建议!谢谢!