TL; DR
Как смоделировать (для ut) один и тот же объект в python и узле без дублирования кода
Объяснение
В моей архитектуре проекта у нас есть два сервера, один написан на python, а другой на узле (я не знаком с сервером узлов).
Они оба имеют дело с одним и тем же логическим объектом, для примера мы будем использовать объект «Карта».
Со стороны Python у нас есть объекты, которые описывают объект «Карта», такие как Карта, Место, Точка и т. Д.
Мы выполняем связь между серверами в json, которые описывают объект карты, поэтому у объекта Python Map есть функции ".to_json" и ".create_from_json".
Сервер узла - это то, что пользователь фактически использует, скажем, пользователь может создать «удивительную карту», что мы знаем в нашей терминологии (например, карту с 5 местами, одно из которых находится на горе). ), Означает, что узел имеет код, который создает «удивительную карту» (не для тестирования).
Когда на стороне Python пишут юнит-тестирование, мы должны смоделировать «удивительную карту». На данный момент у нас есть несколько вспомогательных классов, которые создают несколько фиктивных карт, одна из которых - «удивительная карта».
Нет никакой гарантии, что наш код мошенничества и код узла работают одинаково - , в этом проблема .
Решение, к которому мы пришли - :
написание сервера узлов, который реализует логику насмешки для объекта «Карта» и будет возвращать jsons, поэтому будет API для «создать карту», «добавить место» и, возможно, «создать удивительную карту» - оба сервера будут использовать это для блока -тестирование.
Это заставит нас запускать сервер узлов для всех модульных тестов, которые требуют дополнительных затрат.
Я буду рад любым предложениям о том, как решить проблему дублирования кода как для python, так и для модульного тестирования узлов с минимальными издержками.
Спасибо!