如何测试函数是否被装饰器包裹 (javascript)

How to test that a function is wrapped with a decorator (javascript)

我已经在我的项目中编写并使用了装饰器,现在我正在尝试测试用装饰器 包装的函数 是否用装饰器包装。

我想我可以测试装饰器中发生的事情是否正在发生,我已经知道该怎么做,但我更喜欢完全模拟装饰器并断言函数正在用它包装.

有谁知道如何去做(希望 sinon/chai)?

没有关于对象被任何特定函数装饰的元数据 - 装饰器只是语法糖,也可以以不同的方式应用。

所以是的,断言应该在装饰器中发生的事情确实发生了是唯一的方法。您 可以 模拟装饰器并通过设置特定标志甚至检查装饰器的参数和 return 值来显式测试它是否已应用,但您可能不应该这样做。装饰器是一个实现细节,不要测试它们 - 测试装饰器提供的行为。