0

表单文档:

   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());

所以将创建真正的文件夹(我将使用它的下一个私有方法)。有可能吗?谢谢。

4

1 回答 1

1

非常不清楚您要完成什么。我完全不确定你为什么要首先做这样的事情。

正如我在评论中所说,您当前示例无法编译的原因是File.mkdir()返回 abooleanComparable.compareTo(Comparable)返回 a int。但是,如果您正在模拟返回 a 的方法,则可以编译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();
  }
}

像这样编写它可以避免在实际创建目录时产生任何混淆。

于 2012-06-24T13:00:18.153 回答