質問

新しいファイルを保存するためにディレクトリとして使用される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");
}

しかし、内部に新しいファイルを作成するときに、ファイルの初期化ブロックでnullpointerexceptionを取得しています createNewFile 方法:

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

ファイルには空のコンストラクターがないために起こると思います。したがって、オブジェクトをock笑すると、内部状態がnullのままです。

私は間違ったアプローチをock笑していますか File folder 物体?私の目標は、新しいファイルを作成する前にいくつかの制約を確認することですが、ファイルシステム上の既存の実際のフォルダーに依存したくありません。

ありがとうございました。

役に立ちましたか?

解決

Fileクラスで内部的に呼び出されるため、FolderのgetPath()の動作を定義する必要があります。

あなたはそれをすることができます:

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

新しいファイルを実際に作成せず、新しいファイルのみを呼び出すまでにのみ機能します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top