在使用JMockit的Mocking方式,且模拟的是一个dubbo方法时的实现原理很困惑。例如:
@Test
public void getNameTest() {
String name1=myObj.getName(); //name1的值是zhangsan
new NonStrictExpectations(myObj) { { myObj.getName();result="aaabbb" } }
String name2=myObj.getName(); //name1的值是aaabbb
}
myObj对象是spring注入的dubbo代理对象,但是在执行测试用例时并没有调用dubbo服务,直接返回"aaabbb"。
我现在有两种想法,但又觉得都不对:
1:asm动态的修改了myObj类的getName方法的实现。但是对象myObj没变,动态修改了方法直接生效吗?
2:JMockit内部标记了myObj对象的getName方法,在重放时直接调用mock的方法,但是debug时没看到相关的代码。
请大神们不惜赐教啊
相似问题