Юнит-тесты передают список объектов в метод.
Метод использует jsonpickle.encode для объектов.
Хорошо, но что делать, когда модульное тестирование отправляет список максируемых объектов и сталкивается с бесконечной рекурсией?
Вот пример кода:
import jsonpickle
from mock.mock import MagicMock
class Foo(object):
def __init__(self):
pass
def encodeFoos(list_of_foos):
[jsonpickle.encode(x) for x in list_of_foos]
def works():
list_of_foos = [Foo()]
encodeFoos(list_of_foos=list_of_foos)
def unit_test_doesnt_work():
list_of_mock_foos = [MagicMock()]
encodeFoos(list_of_mock_foos)
unit_test_doesnt_work()
Выдается ошибка:
RuntimeError: превышена максимальная глубина рекурсии
поскольку jsonpickle, по-видимому, путешествует по бесконечному дереву в осмеянном объекте.
как я могу сохранить производственный код как есть (encodeFoos) и не допустить максимальной рекурсии при передаче фиктивных объектов?
Спасибо!