例子:
语义:希望service.findFirstFocusable方法被监控,同时其调用之后,返回el变量。
- 输入参数1:MockkeyboardFocusService
- 输入参数2:字符串findFirstFocusable
这两个参数去调用spyRegistry.spyOn方法。
首先要判断MockkeyboardFocusService这个对象里确实有findFirstFocusable方法:
如果这个对象已经有and和calls属性,说明已经被spied了:
其中and指向spy strategy,calls指向调用监控器 tracker.
把原始方法的备份存储到originalMethod里:
调用SpyFactory创建spy:
customerSpyStrategy是空的:
基于原始函数创建一个wrapper:
函数调用的监控器tracker:
给wrapper即spied之后的函数添加and和calls属性:
被spy之前:
被spy之后:
更多Jerry的原创文章,尽在:“汪子熙”: