首页 文章

使用Mockito:在私有静态方法中匹配多个参数?

提问于
浏览
3

我一直在尝试使用Mockito和PowerMockito来测试我的代码 . 我有类似于以下类的东西:

public class asdfClass{

    public static String methodToMock(String item, String otheritem){
      return "asdf";
    }

    public static String methodToMock(String item){
      return "asdf";    
    }
}

无论出于何种原因,运行以下内容:

PowerMockito.spy(asdfClass.class);

PowerMockito.when(asdfClass.methodToMock(Mockito.any())).thenReturn("asdfghj");

似乎正确编译但正在运行

PowerMockito.spy(asdfClass.class);

PowerMockito.when(asdfClass.methodToMock(Mockito.any(), Mockito.any())).thenReturn("asdfghj");

没有,并在Mockito.any()s上吐出一个“'void'类型,这里不允许”错误 .

有谁知道怎么办?我在stackoverflow上看到的唯一其他结果表明读者看一下文档,尽管我认为它没有说明私有静态方法中的多个参数 .

(最后我希望用doNothing来模拟一个无效结果,虽然我已经解决了这个问题,我已经知道我的所有void方法都有多个参数)

编辑:没关系,得到它:Is it possible to use partial mocking for private static methods in PowerMock?(关于所选答案的评论4) . 奇怪的是,对于我所知道的一切,这并不是我的错字 .

2 回答

  • 1

    您模拟void方法,因此它不能返回任何内容,因此应省略 thenReturn() 语句(例如,而不是 when() ,使用 doNothing() ) .

  • 1

    根据Is it possible to use partial mocking for private static methods in PowerMock?,PowerMockito.doReturn(mockData).when(DataProvider.class,"readFile",param1,param2,...)可以解决问题 .

相关问题