我有一个从Helper调用静态方法的actor我想模仿:
public class ExampleActor extends AbstractActor {
public Receive createReceive() {
.match(CachedFile.class, cachedFile -> {
UploadFileHelper.makeRequest(cachedFile.getContent());
return true;
});
}
}
我试过嘲笑它:
@RunWith(PowerMockRunner.class)
@PrepareForTest(UploadFileHelper.class)
public class ExampleActorTest {
@Test
public void testCreateFile() {
new TestKit(system) {{
PowerMockito.mockStatic(UploadFileHelper.class);
PowerMockito.when(
UploadFileHelper.makeRequest(any())
).thenReturn(true);
exampleActor.tell(cachedFile, getRef());
}}
}
}
但是出于任何原因,正在调用真正的方法而不是被模拟的方法。
为了在Akka Actor上下文中模拟静态方法,我应该做些什么改变吗?
答案 0 :(得分:0)
当我使用mockStatic时,在
"main"@1 in group "main": RUNNING
可以,但是不能在
中使用"AkkaTestKit-akka.actor.default-dispatcher-3"@2,614 in group "main": RUNNING
创建道具时只需使用CallingThreadDispatcher。
final Props props = Props.create(ExampleActor.class).withDispatcher(CallingThreadDispatcher.Id());
对我有用。