2017-02-07 5 views
1

Я использую библиотеку gozk для интерфейса моего приложения с сервером zookeeper. Я хотел бы, чтобы проверить, что приложение создавать правильные узлы, что они содержат правильное содержание для различных случаев, и что DataWatch и NodeWatch установлены правильно:Как насмехаться с сервером Zookeeper для модульного теста в golang?

т.е. приложение выполняет именно то, что должно на основе узлов и данных.

Могу ли я создать мастер-zookeeper-сервер, который будет создан и уничтожен только во время модульных тестов, с возможностью искусственного создания нового узла и установки содержимого узла? Есть ли другой способ, чем вручную создать сервер zookeeper и использовать его?

Решения уже существует для java

+0

Ваше реферируемое решение в java не является фактически макетом, а работает с реальным экземпляром Zookeeper. Поскольку Zookeeper написан на Java, единственный способ сделать то же самое в go, возможно, используя пакет 'os/exec' для запуска экземпляра Zookeeper. – ymonad

ответ

2

Я рекомендовал бы сделать код твоих, называющим зоопарк стал интерфейсом.

Затем во время тестирования вы суб в объекте «mockZookeeperConn», который просто возвращает значения, как если бы это было действительно для подключения к серверу (но возвращаемые значения зашиты)

0

ответ @Ben Echols «s очень хорошо.

Кроме того, вы можете попробовать «build constraints».

Вы можете настроить различные теги сборки на код real-zk и mock-zk.

Например, мы конфигурируем «продукт» для кода реального zk и «mock» для кода mock-zk.

Таким образом, существует два способа запуска UnitTests:

  • go test -tags mock если не гк окр.
  • go test -tags product если есть доступный zk env.
+0

Да! Спасибо за подсказку. В результате я использовал этот метод, чтобы включить автоматический тест zk unit только тогда, когда доступен экземпляр службы. –

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

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