Java camunda单元测试中的模拟historyService调用
我正在编写API以访问进程引擎。我想测试是否删除了所有已完成的流程实例。为了实现这一点,我想模拟历史服务。我尝试测试的功能是:Java camunda单元测试中的模拟historyService调用,java,mocking,camunda,Java,Mocking,Camunda,我正在编写API以访问进程引擎。我想测试是否删除了所有已完成的流程实例。为了实现这一点,我想模拟历史服务。我尝试测试的功能是: public void deleteFinishedProcessInstances(String... processDefinitionNames){ for(String processDefinitionName : processDefinitionNames){ List<HistoricProcessInstance>
public void deleteFinishedProcessInstances(String... processDefinitionNames){
for(String processDefinitionName : processDefinitionNames){
List<HistoricProcessInstance> finishedInstances = getFinishedProcessInstances(processDefinitionName);
for(HistoricProcessInstance fi : finishedInstances){
historyService.deleteHistoricProcessInstance(fi.getId());
}
log.info("deleted " + finishedInstances.size() + " history process instances");
}
}
public List<HistoricProcessInstance> getFinishedProcessInstances(String processDefinitionName){
List<HistoricProcessInstance> finishedProcessInstances = historyService.createHistoricProcessInstanceQuery().finished().processDefinitionKey(processDefinitionName).list();
return finishedProcessInstances;
}
public void deleteFinishedProcessInstances(字符串…进程定义名称){
for(字符串processDefinitionName:processDefinitionNames){
List finishedInstances=getFinishedProcessInstances(进程定义名称);
对于(历史过程实例fi:完成实例){
deleteHistoricProcessInstance(fi.getId());
}
log.info(“已删除”+finishedInstances.size()+“历史进程实例”);
}
}
公共列表getFinishedProcessInstances(字符串进程定义名称){
List finishedProcessInstances=historyService.createHistoricProcessInstanceQuery().finished().processDefinitionKey(processDefinitionName).List();
返回已完成的过程指令;
}
如何在单元测试中模拟以下调用:
List<HistoricProcessInstance> finishedProcessInstances = historyService.createHistoricProcessInstanceQuery().finished().processDefinitionKey(processDefinitionName).list();
List finishedProcessInstances=historyService.createHistoricProcessInstanceQuery().finished().processDefinitionKey(processDefinitionName).List();
您可以使用Mockito.RETURN\u DEEP\u存根来执行以下操作
when(historyService.createHistoricProcessInstanceQuery().finished().processDefinitionKey(processDefinitionName).list())
.thenReturn(Arrays.asList(pi1,pi2,pi3);
或者尝试支持camunda查询模拟的社区扩展
public class QueryMocksExample {
private final TaskService taskService = mock(TaskService.class);
private final Task task = mock(Task.class);
@Test
public void mock_taskQuery() {
// bind query-mock to service-mock and set result to task.
final TaskQuery taskQuery = QueryMocks.mockTaskQuery(taskService).singleResult(task);
final Task result = taskService.createTaskQuery().active().activityInstanceIdIn("foo").excludeSubtasks().singleResult();
assertThat(result).isEqualTo(task);
verify(taskQuery).active();
verify(taskQuery).activityInstanceIdIn("foo");
verify(taskQuery).excludeSubtasks();
}
}
您可以使用Mockito.RETURN\u DEEP\u STUBS来执行以下操作
when(historyService.createHistoricProcessInstanceQuery().finished().processDefinitionKey(processDefinitionName).list())
.thenReturn(Arrays.asList(pi1,pi2,pi3);
或者尝试支持camunda查询模拟的社区扩展
public class QueryMocksExample {
private final TaskService taskService = mock(TaskService.class);
private final Task task = mock(Task.class);
@Test
public void mock_taskQuery() {
// bind query-mock to service-mock and set result to task.
final TaskQuery taskQuery = QueryMocks.mockTaskQuery(taskService).singleResult(task);
final Task result = taskService.createTaskQuery().active().activityInstanceIdIn("foo").excludeSubtasks().singleResult();
assertThat(result).isEqualTo(task);
verify(taskQuery).active();
verify(taskQuery).activityInstanceIdIn("foo");
verify(taskQuery).excludeSubtasks();
}
}
我将投票支持卡蒙达方案。我们从来没有遇到过任何问题,而且它很容易使用。我会投票支持camunda bpm mockito选项。我们从来没有遇到过任何问题,它很容易使用。