簡體   English   中英

在非常簡單的示例中使用EasyMock.expect()時編譯錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM