我正在尝试测试一些严重依赖静态方法调用的遗留代码。
基本上,我有一个类 A,带有方法 b() 和 c()。Ab() 返回 void,Ac() 返回一个值。
如果真正的 Ab() 被调用,被测类会抛出异常,所以我需要它什么都不做。但是,如果我使用:
PowerMockito.spy(A.class);
PowerMockito.doNothing().when(A.class);
然后我不能模拟 Ac() 来返回我需要的值。这是因为线
PowerMockito.when(A.c()).thenReturn(value);
抛出异常:Only void methods can doNothing()
.
有没有办法让 Ab() 什么都不做并“覆盖” Ac() 以返回正确的值?