2016-11-14 39 views
0

我需要重新实现一个模拟方法EasyMock。该方法被定义为返回一个原始值。重新实现返回原始类型的方法

对于模拟的重新实施方法,EasyMock的用户指南建议是这样的:

expect(l.remove(10)).andAnswer(new IAnswer<String>() { 
    public String answer() throws Throwable { 
     return getCurrentArguments()[0].toString(); 
    } 
    }); 

这种方法并不适用于我,因为我需要使用原始的返回类型

在指南中,还有另一种方式andDelegateTo。我需要使用andAnswer的办法,而不是andDelegateTo,因为:

  • 我嘲笑的一类,而不是一个接口
  • 当使用andDelegateTo,我要创建匿名类嘲笑式的,这将调用一个其构造函数,这不适合我的情况。
+1

尝试使用包装类型:整数 - >整数,布尔值 - >布尔等 –

+1

'andAnswer'和'andDelegateTo'是等同的。后者允许输入解决方案。如果你想窥视一堂课,可能很有用。 – Henri

+0

@Henri andAnswer和andDelegateTo在使用上并不相同:http://stackoverflow.com/questions/40640742/easymock-andanswer-vs-anddelegateto任何意见将会有用 – joro

回答

2

使用包装类基本类型的,例如:

List listMock = EasyMock.createMock(List.class); 

EasyMock.expect(listMock.isEmpty()).andAnswer(new IAnswer<Boolean>() { 

    @Override 
    public Boolean answer() throws Throwable { 
     return true; 
    } 
}); 
+1

这是正确的答案。所有原始类型都可以用'IAnswer'包装 – Henri

相关问题