bpmn - простой тест для реализации JavaDelegate - PullRequest
0 голосов
/ 13 февраля 2019

Я реализовал простой JavaDelegate как задачу моего BPMN-процесса:

public class CleanupVariables implements JavaDelegate {

    @Override
    public void execute(DelegateExecution execution) throws Exception {
        String printJobId = execution.getVariable("VIP-Variable").toString();

        // remove all variables
        execution.removeVariables();

        // set variable
        execution.setVariable("VIP-Variable", printJobId);
    }
}

Теперь я хочу написать юнит-тест.

 @Test
    public void testRemove() throws Exception {
        // Arrange
        CleanupVariables cleanupVariables = new CleanupVariables();

        testdelegate.setVariable("VIP-Variable", "12345");
        testdelegate.setVariable("foo", "bar");

        // Act
        cleanupVariables.execute(????); // FIXME what to insert here?

        // Assert
        Assertions.assertThat(testdelegate.getVariables().size()).isEqualTo(1);
        Assertions.assertThat(testdelegate.getVariable("VIP-Variable")).isEqualTo("12345");

    }

Я не смог понятькак вставить некоторую реализацию DelegateExecution в мой акт-шаг.Есть ли здесь какой-нибудь манекен?Как проверить это как можно проще?

Я не буду запускать процессный экземпляр для тестирования этого кода.Google не нашел ничего полезного.

1 Ответ

0 голосов
/ 13 февраля 2019

DelegateExecution - это интерфейс, поэтому вы можете реализовать свой собственный.Но лучший вариант - использовать некоторую библиотеку насмешек, такую ​​как mockito, которая позволяет имитировать только те вызовы методов, которые вас интересуют.

import static org.mockito.Mockito.*;
...

DelegateExecution mockExecution = mock(DelegateExecution.class);
doReturn("printJobId").when(mockExecution).getVariable(eq("VIP-Variable"));
cleanupVariables.execute(mockExecution);

Вот учебник для насмешек с mockito: https://www.baeldung.com/mockito-series

Или, может быть, вы можете использовать DelegateExecutionFake, который находится в этом пакете:

    <dependency>
        <groupId>org.camunda.bpm.extension.mockito</groupId>
        <artifactId>camunda-bpm-mockito</artifactId>
        <version>3.1.0</version>
        <scope>test</scope>
    </dependency>

Но я не могу с этим поделать, так как я никогда не использовал его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...