私は現在、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)
...
をスローし、私は私のObj
結果にMapper
クラス内の私の最初の呼び出し、検証呼び出していない場合NPE。私はEasyMockを非常に新しくしていて、initObj
で作成したObj
を返さない理由をまだ見つけることができませんでした。どんな啓発も大歓迎です。私はSOに関するいくつかの簡単なチュートリアルだけでなく、このトピックにも読むが、助けにはならなかった。
「Obj#findObj」の署名とは何ですか?それは「整数」ですか? (最初のn個のIntegerインスタンスがキャッシュされているので問題はありませんが、誰が知っていますか?) –
'Obj#findObj'はデータベースからカスタムオブジェクトを配信します。 @khelwoodなぜなら、最初に私のコードで確認の呼び出しを持っていなかったからです。 – XtremeBaumer
質問は戻り値の型ではなく、引数の型に... –