我有问题模拟whenNew(File.class)使用PowerMockito.这是我要测试的方法:
public void foo() {
File tmpFile = new File("Folder");
if (!tmpFile.exists()) {
if (!configFolder.mkdir()) {
throw new RuntimeException("Can't create folder");
}
}
File oneFileInFolder = new File(tmpFile, "fileOne.txt");
if (oneFileInFolder.exists()){
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
这是我写的测试代码:
static File mockFile;
@Before
public void setUp() throws Exception {
//....some code
mockFolder = mock(File.class);
when(mockFolder.getPath()).thenReturn("Folder");
when(mockFolder.exists()).thenReturn(true);
whenNew(File.class).withParameterTypes(String.class).withArguments(anyString()).thenReturn(mockFolder);
//...some code
}
Run Code Online (Sandbox Code Playgroud)
但是当我调试我的测试用例时,我仍然看到在我的pwd中创建了一个真正的文件夹.我不想在运行我的测试用例时创建文件夹.任何的想法?
在irb中,-3/4的结果是-1,而不是0.但是,正如预期的那样,3/4的结果是0.
有谁知道发生了什么?
谢谢!
我明白了,谢谢!