我目前正在使用一些使用EasyMock
的測試用例。我的示例代碼如下所示:EasyMock返回null
{
dao = EasyMock.createNiceMock(Dao.class);
initObj();
EasyMock.replay(dao);
// EasyMock.verify(dao);
mapper = new Mapper();
mapper.setDao(dao);
}
@Test
public void testmapper(){
mapper.map();
}
public void initObj() {
Obj o = new Obj();
o.setX(2);
EasyMock.expect(dao.findObj(1)).andReturn(o);
}
class Mapper {
@Autowired
private Dao dao;
public Obj map(){
Obj o = dao.findObj(1);
System.out.println(o.getX());
return o;
}
//getter and setter
}
如果我真的叫EasyMock.verify(dao);
,它拋出
java.lang.AssertionError:
Expectation failure on verify:
dao.findObj(1): expected: 1, actual: 0
at org.easymock.internal.MocksControl.verify(MocksControl.java:183)
at org.easymock.EasyMock.verify(EasyMock.java:2142)
...
,如果我不叫驗證,我的Mapper
類中第一個電話我Obj
結果一個NPE。我是EasyMock的新手,並且還找不到我在initObj
中創建的Obj
。任何啓發都是值得歡迎的。我對這個主題以及一些簡單的教程閱讀了一些問題,但他們並沒有幫助我
「Obj#findObj」的簽名是什麼?它是否與'整數'? (不應該引起問題,因爲前n個Integer實例被緩存,但是誰知道?) –
'Obj#findObj'從數據庫傳遞一個自定義對象。 @ khelwood,因爲我沒有在我的代碼中的驗證電話開始 – XtremeBaumer
問題是沒有針對返回類型,但在參數的類型... –