我们如何在Akka Actor中实例化构造函数?

时间:2015-10-30 09:52:42

标签: java mocking akka testng

我正在为我的akka​​演员类编写单元测试。一个字段在抽象父类中声明,并在其构造函数中实例化。在子类的测试用例执行期间,该字段显示为null。那么如何从测试类中实例化该字段。 注意:我在testNG类中也使用了部分Mocking。

public abstract class ParentClass extends UntypedActor {
    protected RestTemplate restTemplate;
    protected ObjectMapper objMapper;

    public ParentClass () {
        super();
        restTemplate = new RestTemplate();
        objMapper = new ObjectMapper();

    }
}

public class ChildClass extends ParentClass{
    public ChildClass () {
        super();
    }
    public void invoke(String json) throws Exception {
      BeanClass bean = objMapper.readValue(json, Bean.class);
       }

    public String getJsonResponse(String json){
     sysout("Get");
     return "response";
       }
}

public class ChildClassUnitTest {
@BeforeTest
    public  void  setUp() throws Exception{

    actorMock = PowerMock.createPartialMock(ChildClass.class,"getJsonResponse");

        actorMock.getJsonResponse("req");
        PowerMock.expectLastCall().andReturn("resp").anyTimes();
        PowerMock.replay(actorMock);

    } 

    @Test
    public void testInvokePos() throws Exception{

        ResponseClass response=actorMock.invoke("req");
        System.out.println(response);

    }
}

1 个答案:

答案 0 :(得分:0)

我不知道json,我只能帮助java代码。 请看下面的代码。 我的实例字段已正确初始化。它们不是空的。因此,我发现您的代码至少与您发布的内容没有任何问题。需要访问您的UntypedActor课程。

class ClassA
{
    String x;
    public ClassA ()
    {
        x = "Java";

    }
}

abstract class ParentClass extends ClassA{
    protected String restTemplate;
    protected Integer objMapper;

    public ParentClass () {
        super();
        restTemplate = " Language";
        objMapper = 1;

    }
}

class ChildClass extends ParentClass{
    public ChildClass () {
        super();
    }

}

class HelloWorld 
{
    public static void main (String args[] )
    {

        ChildClass cc = new ChildClass ();
        System.out.println ( cc.x + cc.restTemplate + cc.objMapper );
    }
}

代码输出符合预期

  

Java Language1