# #unit-testing #google-app-engine #go
# # #модульное тестирование #google-app-engine #Вперед
Вопрос:
Мне сказали, что лучшим решением для запуска модульных тестов для кода, использующего службы App Engine, такие как хранилище данных или memcache, является запуск сервера разработки в дочернем процессе, но я не уверен, как это сделать. Кто-нибудь успешно провел такой тест и может поделиться решением?
App Engine SDK для Go использует Python dev_appserver; смотрите эту тему .
Комментарии:
1. Каково именно ваше определение «модульного теста»? Мой тестирует один класс изолированно. Это означает, что вы используете специальные макетные объекты для всех других сервисов и классов, используемых тестируемым классом.
2. Мне нужно, например, проверить ответ заданных обработчиков, которые используют хранилище данных или memcache. Я не хочу издеваться над всем хранилищем данных или всеми другими реализациями сервисов для этого, потому что это было бы довольно огромной и безумной задачей. Поэтому мне нужно использовать базовые заглушки, реализованные в dev_appserver.py .
Ответ №1:
Вам следует ознакомиться с библиотекой тестирования Google App Engine Go от Джоша Марша.
Комментарии:
1. Да, это тот самый. Он появился после публикации этого вопроса. 🙂
Ответ №2:
Интересная разработка, начиная с 1.8.6, использующая заглушки служб, была интегрирована в SDK через "appengine/aetest"
пакет. Подробная информация
Ответ №3:
Я знаю, что спрашивающий хочет создать тестовый стенд и должен это сделать, но я думаю, что здесь стоит упомянуть другой подход.
Помимо использования тестового стенда для служб GAE, интересная природа Go также открывает еще одну возможность: напишите свое приложение так, чтобы оно просто требовало объекты, которые имеют используемые вами интерфейсы (они будут подмножеством официальных API), и имитируйте их при тестировании. Для этого требуется, чтобы вы выполняли какое-то внедрение зависимостей, но в любом случае это действительно хорошая идея.
После того, как интерфейсы написаны, вы можете издеваться над ними, используя библиотеку, такую как gomock.