如何为 Camunda 进程编写集成 Spring Boot 测试?

问题描述 投票:0回答:1

如何在 Spring Boot 中编写集成测试来测试 Camunda 进程?

Camunda 流程中需要测试的任务也有调用方法进行 REST 调用的服务,这些需要进行模拟。

例如

@Slf4j
@Component
public class ProcessTaskDelegate implements JavaDelegate {

    @Autowired
    ProcessService processService;

    @Override
    public void execute(DelegateExecution delegateExecution) throws Exception {
        String input = delegateExecution.getVariable("input");
        
        String response = processService.doTask(input);
    

到目前为止,我已经使用mockMvc 来调用启动Camunda 进程的端点。然后我一直在尝试使用@MockBean来模拟必要的服务。

运行测试会产生不一致的结果,有时模拟会交互,有时则不会。我怀疑我的配置是否正确,或者这不起作用......

有更好的方法吗?

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class CamundaIT {

    @Autowired
    private MockMvc mvc;

    @Autowired
    ObjectMapper mapper;

    @MockBean
    private ProcessService processService;

    @MockBean
    private ProcessServiceTwo processServiceTwo;

    private MyRequest request;


    @Before
    public void setup() throws Exception {
        assert(mvc != null);
        assert(mapper != null);
        assert(processService != null);
        assert(processServiceTwo != null);
        request = TestHelper.generateRequest();
    }

    @Test
    public void testCamundaProcess() throws Exception {

        when(processService.doTask(anyString())).thenReturn(TestHelper.getResponse());
        when(processServiceTwo.doAnotherTask(anyString())).thenReturn("Success");

        mvc.perform(post("/process/initiate")
                .contentType(MediaType.APPLICATION_JSON)
                .content(mapper.writeValueAsString(request))
                .andExpect(status().isOk());

        verify(processService).doTask(anyString());
        verify(processServiceTwo).doAnotherTask(anyString());

    }
spring-boot mocking integration-testing spring-boot-test camunda
1个回答
0
投票

如果您使用的是 Camunda 8,Camunda 文档中有一个部分介绍如何使用 Camunda Process Test (CPT)(一个用于测试 BPMN 流程和流程应用程序的 Java 库)编写流程测试。

它使用 JUnit 而不是 mockMvc,但它有详细的示例说明如何测试流程的所有部分。

© www.soinside.com 2019 - 2024. All rights reserved.