あなたが達成しようとしていることは信じられないほど不明確です。そもそもなぜこのようなことをしたいのか、私にはまったくわかりません。
コメントで述べたように、現在の例がコンパイルされない理由File.mkdir()
は、 aboolean
をComparable.compareTo(Comparable)
返し、 を返すためint
です。boolean
ただし、次のように a を返すメソッドをモックしている場合は、これをコンパイルできます。
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();
}
}
このように記述すると、ディレクトリが実際にいつ作成されたかについての混乱を避けることができます。