我已经在我的项目中编写并使用了一个装饰器,现在我正在尝试测试用装饰器包装的函数用装饰器包装。
我想我可以测试装饰器中发生了什么,我已经知道该怎么做了,但我的偏好是完全嘲笑装饰器并断言该函数是用它包装的。< / p>
有谁知道怎么做(希望与sinon / chai合作)?
答案 0 :(得分:1)
没有关于任何特定函数装饰的对象的元数据 - 装饰器只是语法糖,也可以以不同的方式应用。
所以是的,断言装饰器中应该发生的事实确实发生了是唯一的方法。您可以模拟装饰器并通过设置特定标志或甚至检查装饰器的参数和返回值来明确测试它是否已应用,但您可能不应该这样做。装饰器是一个实现细节,不测试它们 - 测试装饰器提供的行为。