2014-07-23 27 views
1

我寫的測試使用了EasyMock,我創建瞭如下mock對象爲我的測試,EasyMock的失蹤行爲定義

auditor = createMock(Auditor.class); 
auditor.start(isA(Audit.class)); //record 
replay(auditor); 
expect(auditor.getAudit("my-process")).andReturn(null); 
replay(auditor); 

審計類有一個方法「開始(Audit.class)」,我錄了第一,然後將其他方法'getAudit()'存根,然後重播它們。然而它抱怨說:從以前的調用開始(isA(Audit.class))缺少行爲定義,我在這裏做錯了什麼?謝謝,

+0

'isA'匹配器告訴期望該方法將被一個Audit.class類型的對象調用。從你對start方法的描述中,它需要一個類型爲Audit的類,而不是一個對象。所以我想你想把'isA'改成'eq'。此外,你可以嘗試使用捕獲,然後檢查捕獲的對象的類,如[這個答案](http://stackoverflow.com/questions/9467049/easymock-matcher-for-class-data-type) –

回答

0

您已經錯誤地指定了「auditor.start(...)」方法的模擬行爲。假設它返回void,一種方法是:

@Test 
public void testAuditor() { 
    Auditor auditor = EasyMock.createMock(Auditor.class); 
    auditor.start(Audit.class); 
    EasyMock.expectLastCall(); //record 
    EasyMock.expect(auditor.getAudit("my-process")).andReturn(null); 
    EasyMock.replay(auditor); 

    //rest of your test code 
}