【问题标题】:Using Mockito: Matching multiple arguments in a private static method?使用 Mockito:在私有静态方法中匹配多个参数?
【发布时间】:2016-08-08 21:08:06
【问题描述】:

我一直在尝试使用 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 结果,尽管我已经将我遇到的问题归结为我所有的 void 方法都采用多个参数这一事实)

编辑:没关系,明白了:Is it possible to use partial mocking for private static methods in PowerMock?(对所选答案的评论 4)。奇怪的是,这以前不起作用,但据我所知,这可能是我的一个错字)

【问题讨论】:

    标签: java mockito powermockito


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 糟糕;提出这个问题时,我似乎匆忙编写代码;编辑它
      • 已编辑;对此感到抱歉
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      相关资源
      最近更新 更多