准备针对handler的handleError方法创建spy:
保存原始方法的信息到变量originalMetho里:
利用spyFactory.createSpy创建spied版本的新方法:
wrap就是spyOn执行完毕后,原始被spied方法被取而代之的新方法:
如下图所示,handler的handleError方法已经被替换成了wrapper:
一旦执行上图的第40行代码,就进入wrap的执行逻辑:
因为调用的是wrapper,wrapper里有track逻辑:
所有被spy之后的方法调用都记录在calls里: