【发布时间】:2016-11-14 15:57:06
【问题描述】:
我需要用 EasyMock 重新实现一个模拟方法。该方法被定义为返回一个原始值。
对于模拟的重新实现方法,EasyMock 用户指南推荐这种方式:
expect(l.remove(10)).andAnswer(new IAnswer<String>() {
public String answer() throws Throwable {
return getCurrentArguments()[0].toString();
}
});
这种方法不适用于我,因为我需要使用原始返回类型。
在指南中,andDelegateTo 还有另一种方式。我需要使用andAnswer 方法,而不是andDelegateTo,因为:
- 我模拟一个类,而不是一个接口
- 当使用
andDelegateTo时,我必须创建模拟类型的匿名类,它将调用其构造函数之一,这不是我的选择。
【问题讨论】:
-
尝试使用包装类型:int -> Integer, boolean -> Boolean 等
-
andAnswer和andDelegateTo是等价的。后者允许一个类型化的解决方案。如果你想监视一个班级,这可能很有用。 -
@Henri andAnswer 和 andDelegateTo 在用法上是不等价的:stackoverflow.com/questions/40640742/… 那里的任何 cmets 都会有用
标签: java unit-testing testing mocking easymock