Я не уверен, что я делаю здесь не так. У меня была эта ошибка в моем коде, поэтому я написал простой пример, чтобы попытаться определить, где находится ошибка.
У меня есть ClassA, который зависит от двух сервисов ServiceA и ServiceB, я пытаюсь протестировать ClassA и насмехаться над ServiceA и ServiceB.
/**
* Last edited by: $Author: cg $
* on: $Date: 17 Jun 2011 11:36:25 $
* Filename: $RCSfile: ClassA.java,v $
* Revision: $Revision: $
*/
package easy;
import java.util.HashMap;
/**
*
* @version $Revision: $, $Date: 17 Jun 2011 11:36:25 $
*/
public class ClassA {
private ServiceA serviceA;
private ServiceB serviceB;
public ClassA(ServiceA a, ServiceB b) {
this.serviceA = a;
this.serviceB = b;
}
public String process(String p) {
HashMap<String,String> a = serviceA.getServiceA(p);
String ret = serviceB.getServiceB(a);
return ret;
}
}
interface ServiceA{
HashMap<String,String>getServiceA(String s);
}
interface ServiceB{
String getServiceB(HashMap<String,String> p);
}
Мое тестирование следующее:
/**
* Last edited by: $Author: cg $
* on: $Date: 17 Jun 2011 11:43:05 $
* Filename: $RCSfile: ClassATest.java,v $
* Revision: $Revision: $
*/
package easy;
import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
import java.util.HashMap;
import junit.framework.Assert;
import org.easymock.EasyMock;
import org.easymock.IMocksControl;
import org.junit.Test;
/**
*
* @version $Revision: $, $Date: 17 Jun 2011 11:43:05 $
*/
public class ClassATest {
@Test
public void testProcess() {
IMocksControl mockery = EasyMock.createControl();
mockery.resetToStrict();
mockery.checkOrder(true);
ServiceA serviceA = EasyMock.createMock("ServiceA",ServiceA.class);
ServiceB serviceB = EasyMock.createMock("ServiceB",ServiceB.class);
ClassA a = new ClassA(serviceA, serviceB);
String myParam = "My Test";
HashMap<String,String> retFromServiceA = new HashMap<String,String>();
retFromServiceA.put("my", "name");
expect(serviceA.getServiceA(eq(myParam))).andReturn(retFromServiceA);
expect(serviceB.getServiceB(retFromServiceA)).andReturn(myParam);
mockery.replay();
String actual = a.process(myParam);
mockery.verify();
Assert.assertEquals(myParam, actual);
}
}
результат не получается, потому что фактический результат равен нулю.
Я попытался отладить код, и я понимаю, что хотя в моих ожиданиях я говорю, что ожидаю, что ServiceA.getServiceA вернет retFromServiceA , это не так. возвращается ноль .
Есть идеи?