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



我一直尝试使用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' type not allowed here"错误。

有人知道该怎么做吗?我在stackoverflow上看到的唯一其他结果建议读者去看一下文档,尽管我认为它没有提到私有静态方法中的多个参数。

(最后我希望用doNothing来模拟void结果,尽管我已经把问题归结为我所有的void方法都需要多个参数)

编辑:没关系,得到它:有可能在PowerMock中使用局部模拟私有静态方法吗?(对所选答案的评论4)。奇怪的是,这之前没有工作,但这可能是我的一部分,我所知道的)

是否可以在PowerMock中使用私有静态方法的部分mock ?, PowerMockito.doReturn(mockData).when(DataProvider.class, "readFile", param1, param2,…)做到了。

你模拟void方法,所以它不能返回任何东西,所以thenReturn()语句应该被省略(例如,代替when(),使用doNothing())。

相关内容

  • 没有找到相关文章

最新更新