gpt4 book ai didi

java - 如何使用EasyMock.capture捕获传入参数?

转载 作者:行者123 更新时间:2023-11-30 06:50:05 25 4
gpt4 key购买 nike

我正在测试一个类,想要监视对特定方法的调用,即保存调用参数以供以后分析。

测试是通过 EasyMock 完成的,因此使用 EasyMock.capture 是合乎逻辑的特征。但是,我设法找到的示例对我不起作用 - 我在 capture 行收到以下编译错误:

EasyMock中的expect(T)不能应用于(void)原因:不存在类型变量 T 的实例,因此 void 符合 T

如果有人能帮我指出我的错误,那就太好了。下面是一个代码片段:

import static org.easymock.EasyMock.capture;

import org.easymock.Capture;
import org.easymock.CaptureType;
import org.easymock.EasyMock;
import org.junit.Before;

class B {

}

class A {
public void doSomething(B input) {

}
}

public class ATest {
private Capture<B> capturedData;
private A testObject;

@Before
private void setUp() {
capturedData = EasyMock.newCapture(CaptureType.ALL);
testObject = EasyMock.createNiceMock(A.class);
EasyMock
.expect(testObject.doSomething(capture(capturedData)))
.anyTimes();
}
}

提前非常感谢!

最佳答案

您的问题与捕获无关,而是与您的 doSomething() 方法的返回类型有关:

由于 A.doSomething(B input) 的返回类型为 void,因此您不希望该方法返回任何内容,因此无法使用 EasyMock .expect() 。相反,只需调用该方法并使用 EasyMock.expectLastCall(),如下所示:

testObject.doSomething(capture(capturedData));
EasyMock.expectLastCall().anyTimes();

EasyMock.expectLastCall() 声明您期望执行 expectLastCall() 之前的最后一个方法调用。然后您可以像 expect() 一样处理它,例如添加 anyTimes() 到它。

关于java - 如何使用EasyMock.capture捕获传入参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42995049/

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