如何使用PowerMock框架验证第二个静态方法是在第一个静态方法中调用的?
public class A {
public static int firstMethod(String s) {
return secondMethod(s, 10);
}
public static int secondMethod(String s, Integer i){
return /*some expression*/;
}
}
更新:
我还没有看到任何解决方案使用PowerMock框架。当然,在链接的问题中没有我可以接受的答案。
更新2:
@Test
public void test() {
PowerMockito.mockStatic(A.class);
Mockito.when(A.secondMethod(Mockito.anyString(), Mockito.anyInt())).thenReturn(1000);
A.firstMethod("test");
PowerMockito.verifyStatic();
}
我认为这是一个糟糕的设计。你不应该检查内部细节,比如调用了哪些方法。
但是已经说过,为什么不只是确保你的第一个方法返回正确的答案,当第二个方法被嘲笑?
@Test
public void test() {
PowerMockito.mockStatic(A.class);
Mockito.when(A.secondMethod(Mockito.anyString(), Mockito.anyInt())).thenReturn(1000);
//1000 was returned by your mocked method
assertEquals(1000, A.firstMethod("test") );
PowerMockito.verifyStatic();
}
这假设您的代码示例对您的问题有效,其中firstMethod
委托并返回来自secondMethod
的调用