在Akka演员中模拟注入课程

时间:2017-02-06 11:26:38

标签: java unit-testing mockito akka powermockito

我正在使用PowerMock,我已经看到使用@InjectMock我可以在我的测试中获得注入的类。

但我需要的是使用注入了一个类的Akka actor,对该actor进行测试并在那里注入一个模拟类。

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


}

只是为了澄清源代码无法修改。

1 个答案:

答案 0 :(得分: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
}