@lolcat_decorator1
@loldog_decorator2
@lolrat_decorator3
def lolanimal(*args, **kwargs):
....
我相信我会单独对这些装饰器进行单元测试。但是这些装饰器会首先对传递给lolanimal
的参数执行操作,然后lolanimal
会对这些修改过的参数执行操作(其中一个装饰器可能会向**kwargs
插入新的关键字参数。)
那么嘲笑它的最佳方式是什么?
由于
答案 0 :(得分:4)
我的第一个想法是创建一个_lolanimal
方法,它封装lolanimal
的所有实际功能,然后让lolanimal
通过_lolanimal
的包装。然后,您可以使用您完全控制的数据针对_lolanimal
运行所有测试。
您也可以创建第二个装饰器,它将在第一个读取配置值之前,或某些类型的测试模式,如果配置值为true,将覆盖lolspecific
装饰器。 ..
答案 1 :(得分:0)
我的第一个想法是你应该将装饰器视为函数实现的一部分,并对单元测试“函数”,希望你不需要将依赖注入那些装饰器 - 如果你这样做,那么需要考虑Silas Ray的答案。