man*_*war 9 java junit mocking mockito
我正在使用Mockito创建一个File mock对象,它将用作存储新File的目录.
Folder folder = Mockito.mock(File.class);
File file = new Agent().createNewFile(folder, "fileName");
Run Code Online (Sandbox Code Playgroud)
在我的Agent类中:
public File createNewFile(File folder, String filename){
return new File(folder, "testfile");
}
Run Code Online (Sandbox Code Playgroud)
但是当我在文件内部创建新文件时,我在File的初始化块中得到一个NullPointerException createNewFile:
java.lang.NullPointerException at java.io.File.<init>(File.java:308)
Run Code Online (Sandbox Code Playgroud)
我认为这是因为File没有任何空构造函数,因此在模拟对象时,某些内部状态保持为null.
我采取了错误的方法嘲笑File folder对象吗?我的目标是在创建新文件之前检查一些约束,但我不想依赖文件系统上现有的真实文件夹.
谢谢.
您需要为文件夹内部调用的文件夹定义getPath()的行为.
你可以这样做:
File folder = Mockito.mock(File.class);
when(folder.getPath()).thenReturn("C:\temp\");
File file = new Agent().createNewFile(folder, "fileName");
Run Code Online (Sandbox Code Playgroud)
只有在你没有真正创建新文件但只调用新文件时它才会起作用.