10

我正在使用 Mockito 创建一个文件模拟对象,该对象将用作存储新文件的目录。

Folder folder = Mockito.mock(File.class);
File file = new Agent().createNewFile(folder, "fileName");

在我的代理类中:

public File createNewFile(File folder, String filename){
    return new File(folder, "testfile");
}

但是在方法内部创建新文件时,我在 File 的初始化块中收到 NullPointerException createNewFile

java.lang.NullPointerException at java.io.File.<init>(File.java:308)

我认为这是因为 File 没有任何空的构造函数,所以在模拟对象时,一些内部状态保持为空。

我是否采取了错误的方法来模拟File folder对象?我的目标是在创建新文件之前检查一些约束,但我不想依赖文件系统上现有的真实文件夹。

谢谢你。

4

1 回答 1

9

您需要为文件夹定义 getPath() 的行为,因为它在 File 类内部被调用。

你可以这样做:

File folder = Mockito.mock(File.class);
when(folder.getPath()).thenReturn("C:\temp\");
File file = new Agent().createNewFile(folder, "fileName");

它只会在你没有真正创建新文件而只调用新文件之前工作。

于 2010-08-18T18:02:11.783 回答