2016-08-22 4 views
0

Я использую неопытный веб-сервер okhttp (https://github.com/square/okhttp/tree/master/mockwebserver) в тесте для совсем немного, и он работает очень хорошо. Из чтения документации и просмотра Google кажется, что библиотека действительно предназначена для тестирования.Использование okhttp mock webserver в производстве

Мой вопрос, хотя есть ли причина, почему я не мог использовать это в производственном коде? У меня есть приложение для Android, над которым я работаю, для чего нужен макет веб-сервера. Я интегрировал его, и он работает нормально, но меня беспокоит, есть ли что-то совершенно неправильное в том, что я делаю.

Кроме того, есть ли какие-либо угрозы безопасности, о которых я должен знать, когда вы используете макет веб-сервера в производстве?

Спасибо!

ответ

3

MockWebServer возвращает «mock» (другими словами, «не реальные») данные. Если вы использовали класс в производстве, вам придется либо продолжать предоставлять поддельные данные, либо делать настоящие HTTP-вызовы через какую-то отдельную библиотеку или инструмент, и передавать свои ответы в MockWebServer. И тогда, какой смысл? Почему бы просто не позволить OkHttp делать звонки напрямую, поскольку он был разработан?

Мое предположение, возможно, вы неправильно понимаете отношения между OkHttp3 и MockWebServer.

  • OkHttp3 - HTTP-клиент, который делает HTTP запросы через любой стек HTTP (по умолчанию, использует поставляемый Android устройство HTTP сеть, Wi-Fi, мобильный и т.д.)
  • MockWebServer - используется только в тестах на поставку жестко закодированные (не реальные) HTTP-ответы на HTTP-клиент OkHttp, так что во время тестов не требуется живое сетевое соединение или последовательно имитировать различные проблемы сетевого подключения, такие как сброшенные соединения, неверные ответы HTTP, ошибки сервера и т. д.

В коде приложения должен использоваться только OkHttp3.

В ваших тестах только у вас есть MockWebServer для подделки ответов (или перехвата, если вы настроите его таким образом), чтобы проверить вызовы вашего приложения на OkHttp3. Когда вы идете на производство, ни один из кодов MockWebServer не должен упоминаться или вызываться (поскольку вы все это вносите в исходные коды тестов/androidTest, верно?), А код OkHttp3 будет выполнять настоящие HTTP-вызовы через Интернет, так как MockWebServer выиграл чтобы их перехватить.

В принципе, если у вас есть что-нибудь в вашем build.gradle кроме testCompile 'com.squareup.okhttp3:mockwebserver:x.x.x' и/или androidTestCompile 'com.squareup.okhttp3:mockwebserver:x.x.x', чем вы делаете это неправильно. Главное, реальное, производственное приложение не нуждается в макетном веб-сервере, поскольку он будет делать реальные вызовы через Интернет на реальном веб-сервере.

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

  • Нет связанных вопросов^_^