单元测试将对象列表传递到方法中。
该方法使用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显然沿着mocked对象中的一棵无限树向下移动。在
如何保持产品代码的原样(encodeFoos),并且在传入模拟对象时不会遇到最大递归?在
谢谢!在