我的代码如下:
File file = File createTempFile(“xxx”, “txt”);
所以,当我使用PowerMock来模拟这个文件对象时,如:
@RunWith(PowerMockRunner.class)
@PrepareForTest({File.class,StringUtils.class})
…
PowerMockito.mockState(File.class);
PowerMockito.when(File.createTempFile(Mockito.any(), Mockito.any()).thenReturn(null);
PowerMockito.mockState(StringUtils.class.class);
PowerMockito.when(StringUtils.isEmpty().thenReturn(false);
当我运行此代码时,此文件为空,但我使用相同的代码来模拟 org.apache.commons.lang3.StringUtils#isEmpty 是有效的
您明确指定了
.thenReturn(null)
,因此您得到 null
并不奇怪。
您当然可以显式返回其他内容,例如模拟对象:
File mockFile = Mockito.mock(File.class);
PowerMockito.when(File.createTempFile(Mockito.any(), Mockito.any()).thenReturn(mockFile);