2016-12-29 3 views
2

Я пытаюсь написать модульные тесты для единицы класса okhttp3, и я застреваю в издевательском классе okhttp3.Response.Почему класс okhttp3.Response final

Объявлено, что окончательные и самые издевательские рамки не могут высмеять финальные классы. Я бы предпочел НЕ использовать Powermock только для этого.

Оглядываясь на код, я вижу, что можно было бы создать реальный экземпляр класса Response и использовать его в тесте, но он был бы гораздо более удобным и менее читаемым, чем просто издевательский метод (в мое дело).

Какие-либо конкретные причины «окончательного» модификатора класса okhttp3.Response или любые планы по его удалению в последующих выпусках?

+0

https://github.com/square/okhttp/issues? Редактирование. С быстрым взглядом кажется, что они не хотят расширять свои классы, поскольку это позволяет им делать изменения намного легче. Кроме того, будет ли полезен https://github.com/square/okhttp/tree/master/mockwebserver? Существует класс 'MockResponse'. –

+1

@Slanec там github.com/square/okhttp/issues - это явная ссылка на переполнение стека для «вопросов». Я не могу поверить, что я первый, кто написал блок-тест для некоторого кодирования, используя okhttp-клиент и нажав на него. – vap78

+0

А, я вижу, правильно. Для вас может быть какое-то хорошее решение, но сначала вам нужно сказать, чего вы пытаетесь достичь и почему. Почему вы издеваетесь над «Response», будут ли «MockWebServer» и «MockResponse» работать достаточно хорошо для вас? Если нет, то почему? –

ответ

8

Response - класс ценности, и поэтому его не следует издеваться. Вы можете создавать экземпляры с Response.Builder с любыми данными, которые вы хотите получить Response.

Планировщик final не планирует.

Смежные вопросы