Насмешливые строители в тесте JUnit - PullRequest
1 голос
/ 05 февраля 2020

Скажем, если у меня есть тест, который использует строители для создания объектов. Проблема заключается в том, что метод builder () в классе builder имеет статус stati c.

. В общем, насмешка над методом stati c уже является показателем плохого дизайна. Однако в случае сборщиков методы builder () всегда имеют статус c. Каков наилучший подход к методам модульного тестирования с использованием builders ()? Должны ли строители быть преобразованы в отдельный класс для облегчения насмешек?

class Service {

    private SqsClient sqsClient;
    private String sqsQueueUrl;

    public Service(String sqsQueueUrl) {
        this.sqsClient = SqsClient.builder().build();
        this.sqsQueueUrl = sqsQueueUrl;
    }

    public SqsClient getClient() {
        return this.client;
    }
    public SqsClient setClient(SqsClient client) {
        this.client = client;
    }

    public String getSqsQueueUrl() {
        return this.sqsQueueUrl;
    }
    public void setSqsQueueUrl(String sqsQueueUrl) {
        this.sqsQueueUrl = sqsQueueUrl;
    }

    public void onEvent(Activity activity) {
        // How to mock builders in unit test?
        DeleteMessageRequest deleteRequest = DeleteMessageRequest.builder().queueUrl(this.sqsQueueUrl).receiptHandle(activity.getReceiptHandle()).build();
        DeleteMessageResponse deleteMessageResponse = this.sqsClient.deleteMessage(deleteRequest);
    }
}


class ServiceTest {
    @Test
    public void testEvent() {

        String sqsQueueUrl = "http://127.0.0.1";
        String receiptHandle = "asdasd";

        SqsClient sqsClient = EasyMock.mock(SqsClient.class);
        Service service = EasyMock.mock(Service.class);

        // EasyMock expect and replay here.

        service.setClient(sqsClient);
        service.setSqsQueueUrl(sqsQueueUrl);

        Activity activity1 = new Activity();
        activity.setReceiptHandle(receiptHandle);

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