[英]Difference between EasyMock.expect(…).times(…) versus using EasyMock.expect(…) several times?
[英]Compile error while using EasyMock.expect() in very simple example?
我正在嘗試使用EasyMock的一個非常簡單的例子,但是我根本無法構建它。 我有以下測試用例:
@Test
public void testSomething()
{
SomeInterface mock = EasyMock.createMock(SomeInterface.class);
SomeBase expected = new DerivesFromSomeBase();
EasyMock.expect(mock.send(expected));
}
但是我在EasyMock.expect(...
得到以下錯誤EasyMock.expect(...
行:
The method expect(T) in the type EasyMock is not applicable for the arguments (void)
有人能指出我正確的方向嗎? 我完全迷失了。
如果要測試void
方法,請在模擬上調用要測試的方法。 然后調用expectLastCall()
方法。
這是一個例子:
@Test
public void testSomething()
{
SomeInterface mock = EasyMock.createMock(SomeInterface.class);
SomeBase expected = new DerivesFromSomeBase();
mock.send(expected);
EasyMock.expectLastCall().andAnswer(new IAnswer<Object>() {
public Object answer() {
// do additional assertions here
SomeBase arg1 = (SomeBase) EasyMock.getCurrentArguments()[0];
// return null because of void
return null;
}
});
}
由於send()方法返回void,因此只需使用期望值調用mock方法並重放:
SomeInterface mock = EasyMock.createMock(SomeInterface.class);
SomeBase expected = new DerivesFromSomeBase();
mock.send(expected);
replay(mock);
由於您在模擬接口,因此模擬方法的唯一目的是從該方法返回結果。 在這種情況下,您的'send'方法的返回類型似乎無效。 'EasyMock.expect'方法是通用的,並且需要返回類型,這會導致編譯器告訴您不能使用void方法,因為它沒有返回類型。
有關更多信息,請參閱http://easymock.org/api/easymock/3.0/index.html上的EasyMock API文檔。
您不能以這種方式使用void返回腳本方法; 查看這個問題,以獲得關於如何模擬send
方法在expected
對象上的行為的良好答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.