前几天写单元测试,遇到了需要模拟被调函数的功能,还需要统计被调函数的调用次数,当时随便写了一个代理类,周末有新的想法,优化了一把,这里把自己的实现写下来。
代理类参考了spring的aop的通知,代理被调函数时可以注册四个函数:
before:在被调函数调用前运行
after:被调函数调用后运行
throwsException:被调用函数抛出异常时执行
around:如果存在,将替代调用函数,里面可以决定是否执行被调用函数
具体代码如下:
在代理类里面,原始函数和调用次数都保存了下来,可以用fn的guid查找得到,可以加多两个函数来还原和取得调用次数。
写了段测试代码,也作为demo吧,用了console,在ie下的话要修改输出方式