我已经为 Camunda 引擎配置了org.camunda.bpm.engine.test.mock.MockExpressionManager
. 乍一看,它按预期工作:当我这样做时
Mocks.register("myDelegate", myDelegateMock)
,bpmn 进程调用我的模拟,而不是真正的委托。但是当有一个任务被某个计时器边界事件调用时,模拟被忽略并且真正的委托被调用。
我查看了代码,发现模拟存储在 ThreadLocal 中。如果任务是由定时器调用的,则执行发生在不同的线程中。这看起来像是这种行为的根本原因。如果任务被标记为异步,可能模拟也将不起作用。
我也尝试过扩展 https://github.com/camunda/camunda-bpm-mockito ,但看起来它在内部使用相同的 Mocks.register,并且对我也不起作用。
可能还有其他一些模拟委托的可能性,适用于计时器的情况?