繁体   English   中英

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

[英]How can we instantiate the constructor in Akka Actor?

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

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);

    }
}

我不了解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语言1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM