问题:当记录的方法的参数是方法所在类内部新NEW的对象时,静态的记录方法交互就会失效,例如
调用的方法:
public calss A{ public void method(User u){ u.setUsername("admin"); } }
交互类:
public class B{ private A a; public B(A a){ this.a = a } public void methodB(){ User user = new User(); a.method(user); } }
测试类:
public class test{ @Test public void testMethodB(){ IMocksControl mc = EasyMokc.createStrictControl(); A a = mc.createMock(A.class); B b = new B(a); User u = new User(); a.method(u); mc.replay(); b.methodB(); mc.verify(); } }
解决方法:通过easymock自带的动态参数的方法来与记录方法交互。
public class test{ @Test public void testMethodB(){ IMocksControl mc = EasyMokc.createStrictControl(); A a = mc.createMock(A.class); B b = new B(a); /* //原方式 User u = new User(); a.method(u);*/ //动态参数 a.method(EasyMock.anyObject()); mc.replay(); b.methodB(); mc.verify(); } }