在JUNIT测试中,我正在使用JMOCK。在某些示例中,我看到的代码类似于以下代码段:
mock.checking(new Expectations(){
{
allowing(tmp).assign(
with(any(String.class)),
with(any(String.class)),
with(any(Integer.class)),
with(any(Boolean.class)));
will(returnValue("BLAH"));
}
});
我了解tmp
是一个由JMOCK嘲笑的类,它将从assign返回"BLAH"
。
但是,为什么有两组花括号?为什么新的期望(){}?它们没有外部定义而嵌套。
为什么会这样?
答案 0 :(得分:3)
这被称为一种称为double-brace initialization的技术。第一组创建一个匿名内部类,第二组创建实例初始化(而不是静态初始化)。在这种情况下,这允许您创建Expectations对象并在线进行一些设置工作。