表单文档:
Comparable c=mock(Comparable.class);
when(c.compareTo(anyInt())).thenReturn(-1);
我想:
File tempDir=new File("test");
Comparable c=mock(Comparable.class);
when(c.compareTo(anyInt())).thenReturn(tempDir.mkdir());
因此将创建真正的文件夹(我将使用它下一个类的私有方法)。 有可能吗? 感谢。
答案 0 :(得分:1)
令人难以置信的是,你要完成的是什么。我一点也不确定你为什么要这样做。
正如我在评论中所说,当前示例无法编译的原因是File.mkdir()
返回boolean
而Comparable.compareTo(Comparable)
返回int
。但是,如果您正在模拟返回boolean
的方法,则可以进行此编译,如下所示:
public class Foo {
public static void main(String[] args) {
File file = new File("/tmp/111");
Bar bar = mock(Bar.class);
when(bar.isTrue()).thenReturn(file.mkdir());
}
public static interface Bar {
public boolean isTrue();
}
}
那就是说,我严重怀疑这会做你想做的事。行when(bar.isTrue()).thenReturn(file.mkdir());
实际上调用了 file.mkdir()
。因此,在创建模拟时将创建您的目录。换句话说,前面的例子可以(并且应该)等效地写成:
public class Foo {
public static void main(String[] args) {
File file = new File("/tmp/111");
Bar bar = mock(Bar.class);
boolean dirMade = file.mkdir();
when(bar.isTrue()).thenReturn(dirMade);
}
public static interface Bar {
public boolean isTrue();
}
}
这样写它可以避免在实际创建目录时产生任何混淆。