Javascript 如何计算对象属性更改的次数

Javascript 如何计算对象属性更改的次数,javascript,jasmine,Javascript,Jasmine,我正在创建一个单元测试来检查window.location.hash更改了多少次 it("checking location.hash change", () => { myLink.click(); // expecting window.location.hash is changed only one time. }); 如何监视中的对象属性?您可以使用窗口.onhashchange事件增加每次更改的计数器。。。那对你有用吗 var changes = 0; window.

我正在创建一个单元测试来检查window.location.hash更改了多少次

it("checking location.hash change", () => {
  myLink.click();
  // expecting window.location.hash is changed only one time.
});

如何监视中的对象属性?

您可以使用
窗口.onhashchange
事件增加每次更改的计数器。。。那对你有用吗

var changes = 0;
window.onhashchange = x=> changes++;
对于其他对象/属性,可以使用相同的原理,使用getter或代理。
另一种选择是使用一些库,允许您监视变量。一个选项可能是

我会告诉您对属性或函数进行猴子补丁,但我不认为这是一个选项,因为
window.location.hash可能是只读的。对于这样的测试内容(例如,
窗口中的任何内容
我通常将其包装在一个模块/类中,这样我就可以对其进行存根/模拟等操作,并消除玩游戏的需要。实际上,无论设置什么
位置。hash
都应该设置一些可以模拟启动的包装器,但理想情况下,OP将允许模拟hash对象。