めも

技術メモとその他

【Java】easy mock "入れ子"のサンプル

<test class>

1. inner class

 

public class ConcatorIml implements Concater {

 

@Override

public String concat(String str1, String str2) throws Exception {

 

String conc = "";

conc = str1+str2;

 

return conc;

}

 

}

 

2.outer class

 

public class parConcatorImpl implements parConcator {

 

@Override

public String conc(Concater cn) {

 

String str = null;

try {

str = cn.concat("a", "b");

} catch (Exception e) {

 

e.printStackTrace();

}

return str;

}

 

}

 

<mock test code>

@Test

public void testCbIml() throws Exception {

 

Concater mock = EasyMock.createMock(ConcatorIml.class);

EasyMock.expect(mock.concat(

      (String) EasyMock.anyObject(),

      (String) EasyMock.anyObject())).andReturn("inner mock return");

EasyMock.replay(mock);

 

parConcator mockMain = EasyMock.createMock(parConcatorImpl.class);

EasyMock.expect(mockMain.conc(mock)).andAnswer(new IAnswer<String>() {

public String answer() throws Throwable {

String str =mock.concat("a", "b");

            return str;

        }

 

});

 

 

EasyMock.replay(mockMain);

 

String str = mockMain.conc(mock);

EasyMock.verify(mockMain);

EasyMock.verify(mock);

 

 

System.out.println(str);

 

}