2017-02-06 7 views
0

Ich benutze PowerMock und ich habe gesehen, dass @InjectMock Ich kann die injizierte Klasse in meinem Test bekommen.Mock injiziert Klasse in Akka Schauspieler

Aber was ich brauche ist, dass mit einem Akka Schauspieler, der eine Klasse injiziert hat, einen Test gegen diesen Schauspieler und injizieren Sie eine Scheinklasse in dort.

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


} 

Nur um den Quellcode zu klären, kann nicht geändert werden.

Antwort

0

Der einfachste Weg ist, um Konstruktor Injektion zu ändern:

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

, die zu diesem Test führt:

@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

ich die Frage zu ändern, ich fürchte, der Quellcode nicht ändern können – paul

Verwandte Themen