我依赖于一个将 Map 作为参数的方法。
public interface Service {
void doSomething(Map<String, String> map);
}
我想写一个断言,这个依赖是用适当的地图内容调用的。像这样的东西:
@RunWith(JMock.class)
public class MainTest {
private Mockery context = new Mockery();
private Service service = context.mock(Service.class);
private Main main = new Main(service);
@Test
public void test() {
context.checking(new Expectations(){{
oneOf(service).doSomething(with(hasEntry("test", "test")));
}});
main.run();
}
}
不幸的是,这无法编译,因为 hasEntry 在映射通用参数中有通配符:
public static <K, V> org.hamcrest.Matcher<java.util.Map<? extends K, ? extends V>> hasEntry(K key, V value);
有没有办法为地图内容编写 JMock 期望?