2017-02-06 3 views
0

Я использую PowerMock, и я видел, что с использованием @InjectMock Я могу получить введенный класс в свой тест.макет введенного класса в аккорде Акка

Но мне нужно, чтобы с помощью аккорда Akka, который ввел класс, проведите тест против этого актера и введите там класс макета.

class A extends Actor{ 

    @Inject private B b;//How can I mock this class? 

} 

@Test 
public test(){ 
      final Props props = Props.create(A.class, new A()); 
     testActorRef = TestActorRef.create(actorSystem, props); 
      Future<Object> ask = Patterns.ask(testActorRef); 


} 

Просто уточнить, что исходный код не может быть изменен.

ответ

0

Самый простой способ изменить инъекцией конструктора:

class A extends Actor{ 
    private final B b;//How can I mock this class? 
    A(@Inject B b){ 
    this.b=b; 
    } 
} 

, что приводит к этому тесту:

@Rule public MockitoRule mockitoRule = MockitoJUnit.rule(); 

@Mock private B mockedB; 

@Test 
public test(){ 
      // configure mockedB here 
      A a = new A(mockedB); 

      // do something with a 
      // verify method invocations on b 
} 
+0

изменить вопрос, я боюсь, что исходный код не может быть изменить – paul

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