如何验证第二个静态方法是否在第一个静态方法中被调用?



如何使用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的调用

相关内容

  • 没有找到相关文章

最新更新