2015-10-30 2 views
0

Я пишу модульные тесты для своих классов акк-акков. поле объявляется в абстрактном родительском классе и создается внутри его конструктора. Во время выполнения тестового примера дочернего класса это поле показывает нуль. Итак, как создать экземпляр поля из тестового класса. Примечание: Я использую частичное Mocking также в классах 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); 

    } 
} 
+0

вы хотели бы поделиться здесь код? – SacJn

+0

Привет SacJn Я загрузил фиктивный код. Взгляни, пожалуйста. –

+0

Вы читали документы Акка об испытании актеров? вы можете создать экземпляр актера через реквизит, и поэтому вы используете TestActorRef в тестовом сценарии. Затем вы можете получить доступ к базовому Актору. Я не уверен, что насмехается будет работать так, как вы надеетесь в своем примере http://doc.akka.io/docs/akka/snapshot/java/testing.html – nickebbitt

ответ

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

Смежные вопросы