gpt4 book ai didi

java - JMock - 添加期望的奇怪语法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:10:37 25 4
gpt4 key购买 nike

我目前正在编写一些涉及 JMock 的测试。我无法理解以下代码结构:

context.checking(new Expectations() {  //context is of type Mockery of course
{
allowing(csv).getFileName();
will(returnValue(fileName));
}
});

慢慢分析,据我所知,

context.checking(new Expectations() { ... }

这将生成 Expectations 的匿名实例化。但是为什么我们在这之后有另一个方括号,然后是一些奇怪的、我认为是静态的方法,例如 allowing() 等?如果有人能从 Java 的角度向我解释这里发生了什么,我将不胜感激。

最佳答案

第二组花括号组成一个 instance initialization block ,它的代码被编译器复制到类的每个构造函数中。这使您可以访问实例成员。对于 JMock 的 API,它提供了一种简洁的方式来初始化期望。您可以使用模板方法实现等效的事情(尽管在编译 Expectations 本身时会发出警告,提示从构造函数对可重写方法的不安全调用)。

public abstract class Expectations {
public Expectations() {
buildExpectations();
}

protected abstract void buildExpectations();

...
}

在你的测试中

context.checking(new Expectations() {
protected void buildExpectations() {
allowing(csv).getFileName();
will(returnValue(fileName));
}
});

我绝对喜欢较短的版本。 :)

关于java - JMock - 添加期望的奇怪语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10769053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com