如何在调用同一对象的私有或公共方法时更改方法调用的绑定上下文?

时间:2014-11-18 10:31:06

标签: javascript testing binding wrapping stubbing

因此,我使用名为deride的库来存储并强制执行错误以进行测试,这与冻结对象非常相似。但是,我需要在包装对象上调用一个方法,但在其中调用另一个方法,我需要该方法作为存根调用。

所以我并不期望人们熟悉deride,但问题是:如果不修改原始方法,包装函数greet是否可以调用包裹的{{} 1}}功能而不是原始的?

可以通过设置绑定上下文来实现吗?

salutation

1 个答案:

答案 0 :(得分:0)

很抱歉,但是我没有办法在不违反Person的不变性的情况下做到这一点。

Deride在包装时与Object.freeze很好地配合,而不是修改对象,因此对salutation()的内部引用将始终是对象的冻结实例,而不是您的存根,包装方法。

最终如果你把salutation()的责任从这个类中带出来并进入一个注入的单独的类中,代码将变得更加可测试,因为你可以在Object.freeze之前覆盖依赖项