使用 Mockito:在私有静态方法中匹配多个参数?
Using Mockito: Matching multiple arguments in a private static method?
我一直在尝试使用 Mockito 和 PowerMockito 来测试我的代码。我有类似于以下内容的内容 class:
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() 上吐出“'void' 此处不允许输入”错误。
有人知道该怎么办吗?我在 Whosebug 上看到的唯一其他结果建议 reader 查看文档,但我认为它没有说明私有静态方法中的多个参数。
(最后我希望用 doNothing 来模拟一个 void 结果,尽管我已经解决了这个问题,我不得不归结为我所有的 void 方法都采用多个参数)
编辑:没关系,明白了:Is it possible to use partial mocking for private static methods in PowerMock?(对所选答案的评论 4)。奇怪的是,这以前没有用,但据我所知,这可能是我的错字)
你模拟了 void 方法,所以它不能 return 任何东西,所以应该省略 thenReturn()
语句(例如,而不是 when()
,使用 doNothing()
).
根据 Is it possible to use partial mocking for private static methods in PowerMock?, PowerMockito.doReturn(mockData).when(DataProvider.class, "readFile", param1, param2, ...) 可以解决问题。
我一直在尝试使用 Mockito 和 PowerMockito 来测试我的代码。我有类似于以下内容的内容 class:
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() 上吐出“'void' 此处不允许输入”错误。
有人知道该怎么办吗?我在 Whosebug 上看到的唯一其他结果建议 reader 查看文档,但我认为它没有说明私有静态方法中的多个参数。
(最后我希望用 doNothing 来模拟一个 void 结果,尽管我已经解决了这个问题,我不得不归结为我所有的 void 方法都采用多个参数)
编辑:没关系,明白了:Is it possible to use partial mocking for private static methods in PowerMock?(对所选答案的评论 4)。奇怪的是,这以前没有用,但据我所知,这可能是我的错字)
你模拟了 void 方法,所以它不能 return 任何东西,所以应该省略 thenReturn()
语句(例如,而不是 when()
,使用 doNothing()
).
根据 Is it possible to use partial mocking for private static methods in PowerMock?, PowerMockito.doReturn(mockData).when(DataProvider.class, "readFile", param1, param2, ...) 可以解决问题。