public class A {
public void action() {
....
//findSomeThingThroghClassB logic;
....
}
}
先把A中需要B的部分findSomeThingThroghClassB logic提取成一个protected方法
public class A {
public void action() {
....
findSomeThingThroghClassB();
....
}
protected void findSomeThingThroghClassB() {
//findSomeThingThroghClassB logic;
}
}
然后在TestCase中创建A时
A a = new A() {
protected void findSomeThingThroghClassB() {
mockIt();
}
}
这样在测试中就可以直接使用mock了。
相比其它方法,这种方法对A类的改动较小,而且不需要新增类变量。