2011-10-05 30 views
0

所以我有以下導入在我的課:如何用easymock 3.x模擬一堂課?

import static org.easymock.classextension.EasyMock.*; 

所以我創建了一個真正的對象

SomeJobDataMap map = SomeJobDataMap(); 
map.put(Constant.SOMETHING,"somevalue"); 
map.put(Constant.SOMETHING_ELSE,"anothervalue") 

然後我創建一個模擬:

SomeJobContext context = createMock(SomeJobContext.class); 
expect(context.getJobDataMap()).andReturn(map); 

重播(背景);

testTargetClass.methodUnderTest(context); 

...除了「methodUnderTest」嘗試訪問值時發生的NPE外,沒有錯誤。爲什麼我的模擬不會返回地圖?

+0

嘗試添加'verify'並確保你嘲笑正確的方法(即它在流程中被調用) – aishwarya

回答

0

我猜測你的類正在與你的SomeJobContext類進行協作。 在這種情況下,您需要調用testTargetClass.setContext(context)。

+0

這是相當一段時間以前,但我記得,我忘記調用replay(); – user447607

0

也許你忘記配置測試期望調用該方法的次數?

SomeJobContext context = createMock(SomeJobContext.class); 
expect(context.getJobDataMap()).andReturn(map).once(); 
replay(context); 

testTargetClass.methodUnderTest(context);